"""
Lambda-specific database manager that works with PostgreSQL.
Replaces SQLite-specific components for cloud deployment.
"""
import os
from typing import Optional
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from src.core.models import Base
class LambdaDatabaseManager:
"""
Database manager for Lambda functions using PostgreSQL.
Handles connection management for serverless environment.
"""
def __init__(self, database_url: str):
"""
Initialize database manager with PostgreSQL connection.
Args:
database_url: PostgreSQL connection string
"""
self.database_url = database_url
self.engine = create_engine(
database_url,
echo=False,
pool_pre_ping=True, # Verify connections before use
pool_recycle=300, # Recycle connections every 5 minutes
connect_args={"connect_timeout": 10}
)
self.SessionLocal = sessionmaker(bind=self.engine)
def get_session(self):
"""Get a new database session."""
return self.SessionLocal()
def create_tables(self):
"""Create all tables if they don't exist."""
Base.metadata.create_all(bind=self.engine)
def close(self):
"""Close the database engine."""
if hasattr(self, 'engine'):
self.engine.dispose()