Skip to main content

Shared utilities for Optikka microservices (logger, errors, response utils, auth validation, database clients, AI clients)

Project description

optikka-design-data-layer

Shared design data layer utilities for Optikka microservices running on AWS Lambda.

This package provides AWS service clients, database connections, validators, and utilities for Lambda functions in the design-data-microservices ecosystem.

Installation

pip install optikka-design-data-layer

Usage

Database Clients

from optikka_design_data_layer.clients import mongodb_client, postgres_client

# MongoDB operations
template = mongodb_client.get_template_registry_by_id("template-123")

# PostgreSQL operations
result = postgres_client.execute_query("SELECT * FROM images WHERE id = %s", ("image-123",))

AWS Services

from optikka_design_data_layer.aws import (
    upload_script_to_s3,
    SecretsManager,
    BedrockClient,
    OpenAIClient,
)

# S3 operations
s3_location = upload_script_to_s3("my-script-content", "script.js")

# Secrets Manager
secrets = SecretsManager()
api_key = secrets.get_secret("my-secret-arn")

# AI clients
bedrock = BedrockClient()
openai = OpenAIClient()

Validation

from optikka_design_data_layer.validation import (
    validate_auth_from_event,
    TemplateInputValidator,
)
from ods_models import TemplateInput, TemplateRegistry

# Auth validation
if validate_auth_from_event(event, secret_name):
    # Process authenticated request
    pass

# Template input validation
validator = TemplateInputValidator()
is_valid, errors = validator.validate(template_input, template_registry)

Utilities

from optikka_design_data_layer.utils import (
    create_success_response,
    create_error_response,
    get_all_guide_data_by_image,
)

# Lambda response utilities
return create_success_response(data={"message": "Success"})
return create_error_response(500, "Internal server error")

# Asset data utilities
guides = get_all_guide_data_by_image(images)

Configuration and Logging

from optikka_design_data_layer import logger, EnvironmentVariables

# Logging (AWS Lambda Powertools)
logger.info("Processing request")
logger.error("Error occurred", exc_info=True)

# Environment variables
db_name = EnvironmentVariables.MONGODB_DATABASE_NAME
bucket = EnvironmentVariables.S3_BUCKET_PREFIX

Package Structure

optikka_design_data_layer/
├── clients/           # Database clients
│   ├── mongo_client.py
│   ├── postgres_client.py
│   ├── postgres_credential_manager.py
│   └── mongodb_guide_client.py
├── aws/               # AWS service clients
│   ├── s3_utils.py
│   ├── secrets_manager.py
│   ├── bedrock_client.py
│   └── openai_client.py
├── validation/        # Validators
│   ├── validate_auth.py
│   └── validate_template_input_object.py
├── utils/             # Utilities
│   ├── response_utils.py
│   └── get_asset_data_by_image.py
├── logger.py          # AWS Lambda Powertools logger
├── config.py          # Environment variables
├── errors.py          # Custom exceptions
└── connection_types.py # Connection types

Dependencies

  • ods-models-py: Pydantic data models
  • boto3: AWS SDK for Python
  • pymongo: MongoDB driver
  • psycopg2-binary: PostgreSQL adapter
  • aws-lambda-powertools: AWS Lambda utilities
  • pydantic: Data validation
  • openai: OpenAI client
  • And more...

Migration from Lambda Layer

Old (Lambda layer imports)

from logger import logger  # pylint: disable=import-error
from models import TemplateRegistry  # pylint: disable=import-error
from mongo_client import mongodb_client  # pylint: disable=import-error

New (pip package imports)

from optikka_design_data_layer import logger
from ods_models import TemplateRegistry
from optikka_design_data_layer.clients import mongodb_client

Development

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Format code
black src/ tests/

# Lint
ruff check src/ tests/

Related Packages

  • ods-types-py - Core types and enums
  • ods-models-py - Pydantic data models

License

PROPRIETARY - Optikka

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

optikka_design_data_layer-0.1.24.tar.gz (35.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

optikka_design_data_layer-0.1.24-py3-none-any.whl (42.8 kB view details)

Uploaded Python 3

File details

Details for the file optikka_design_data_layer-0.1.24.tar.gz.

File metadata

File hashes

Hashes for optikka_design_data_layer-0.1.24.tar.gz
Algorithm Hash digest
SHA256 6846b428224d3fb0e1d1653ff69e896843732eea17c0402ad0c14f044c28999d
MD5 c568e9b24fc2b2a444092f96e8b2d5eb
BLAKE2b-256 027fe59ca05eca3bf9bb10618802eb8075aaf7938555e944b5c4b1453acfd511

See more details on using hashes here.

Provenance

The following attestation bundles were made for optikka_design_data_layer-0.1.24.tar.gz:

Publisher: python-publish.yml on OptikkaCorp/design-models-package

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file optikka_design_data_layer-0.1.24-py3-none-any.whl.

File metadata

File hashes

Hashes for optikka_design_data_layer-0.1.24-py3-none-any.whl
Algorithm Hash digest
SHA256 046fbb1303ae87c5b4f9f68dcb123c4ec9ca00d9673f15978ffc19e7bc39eac0
MD5 a13ee22f39e4e13cf276259395de9f38
BLAKE2b-256 610fb6703ffac922032bea3549af951280b89a8b7217e3fce5acfb6954b21738

See more details on using hashes here.

Provenance

The following attestation bundles were made for optikka_design_data_layer-0.1.24-py3-none-any.whl:

Publisher: python-publish.yml on OptikkaCorp/design-models-package

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page