28 lines
641 B
Python
28 lines
641 B
Python
from __future__ import annotations
|
|
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy.engine import Engine
|
|
from sqlalchemy.orm import sessionmaker, Session
|
|
|
|
from app.core.config import settings
|
|
|
|
|
|
def create_postgres_engine() -> Engine:
|
|
return create_engine(
|
|
settings.postgres_connection_url,
|
|
pool_pre_ping=True,
|
|
pool_recycle=1800,
|
|
pool_size=5,
|
|
max_overflow=10,
|
|
future=True,
|
|
)
|
|
|
|
|
|
def create_session_factory(engine: Engine) -> sessionmaker[Session]:
|
|
return sessionmaker(
|
|
bind=engine,
|
|
autoflush=False,
|
|
autocommit=False,
|
|
expire_on_commit=False,
|
|
)
|