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.15.tar.gz (34.4 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.15-py3-none-any.whl (41.4 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for optikka_design_data_layer-0.1.15.tar.gz
Algorithm Hash digest
SHA256 27f13d87a9bece2f884cb702ab89396c3d1e6b6321911052adb64c6bfe22d21e
MD5 3dc240cdb3c08780950dd74d643c7abf
BLAKE2b-256 e7f1ad96ae3aadc7d29a8234388ab56eaac9e3fb7dcd4a9831138040dab03fa3

See more details on using hashes here.

Provenance

The following attestation bundles were made for optikka_design_data_layer-0.1.15.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.15-py3-none-any.whl.

File metadata

File hashes

Hashes for optikka_design_data_layer-0.1.15-py3-none-any.whl
Algorithm Hash digest
SHA256 70c289a7597443dfb17204e814647eff6558589255fd0fc96b5a34fc53b79eec
MD5 55168fa8544535e4797342b0ea3dd14e
BLAKE2b-256 3fd0c8f8103f00a0bf397e867f4a7424e3a6f26e4d0ec962cc459e083dda3aa7

See more details on using hashes here.

Provenance

The following attestation bundles were made for optikka_design_data_layer-0.1.15-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