from datetime import datetime from sqlalchemy import TIMESTAMP, event, func from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column from src.core.settings import settings engine = create_async_engine(settings.db.url, echo=settings.db.echo) @event.listens_for(engine.sync_engine, "connect") def set_sqlite_pragma(dbapi_connection, connection_record): if "sqlite" in settings.db.url: cursor = dbapi_connection.cursor() cursor.execute("PRAGMA foreign_keys=ON") cursor.close() async_session_maker = async_sessionmaker(bind=engine, expire_on_commit=False) class Base(DeclarativeBase): created_at: Mapped[datetime] = mapped_column( TIMESTAMP(timezone=True), server_default=func.now() )