from __future__ import annotations from sqlalchemy import create_engine from sqlalchemy.engine import Engine from sqlalchemy.orm import Session, sessionmaker from app.core.config import settings from app.db.postgres_models import Base def create_postgres_engine() -> Engine: return create_engine( settings.postgres_connection_url, pool_pre_ping=True, pool_recycle=3600, future=True, ) def initialize_postgres_schema(engine: Engine) -> None: Base.metadata.create_all(bind=engine) def create_postgres_session_factory(engine: Engine) -> sessionmaker[Session]: return sessionmaker( bind=engine, autoflush=False, autocommit=False, expire_on_commit=False )