27 lines
814 B
Python
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()
|