from sqlalchemy import text from sqlmodel import SQLModel, Session, create_engine from app.config import settings engine = create_engine(settings.DATABASE_URL) def init_db(): SQLModel.metadata.create_all(engine) def run_migrations(): """Run idempotent schema migrations for columns added after initial create.""" with engine.connect() as conn: try: conn.execute( text( "ALTER TABLE transaction ADD COLUMN IF NOT EXISTS deferred_to_next_cycle BOOLEAN NOT NULL DEFAULT false" ) ) conn.commit() except Exception: conn.rollback() def get_session(): with Session(engine) as session: yield session