Files
2026FIFAWorldCup/platform/backend/app/db/base.py

27 lines
814 B
Python

from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
from sqlalchemy.orm import DeclarativeBase
import os
class Base(DeclarativeBase):
"""Project ORM base model."""
DATABASE_URL = os.getenv('DATABASE_URL', 'postgresql+asyncpg://fifa_user:change_me@fifa2026-postgres:5432/fifa2026')
def get_engine(database_url: str = DATABASE_URL):
"""Create asynchronous SQLAlchemy engine for production use."""
return create_async_engine(database_url, echo=False, pool_pre_ping=True)
def get_session_factory(database_url: str = DATABASE_URL):
"""Create session factory for async query operations."""
engine = get_engine(database_url)
return async_sessionmaker(bind=engine, class_=AsyncSession, expire_on_commit=False)
SessionFactory = get_session_factory()