28 lines
719 B
Python
28 lines
719 B
Python
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
|
|
)
|