from __future__ import annotations from alembic import context from sqlalchemy import engine_from_config, pool from app.db.schema import build_session_tables config = context.config schema = config.get_main_option("resume_agent.schema", "resume_agent") target_metadata, _ = build_session_tables(schema) def run_migrations_offline() -> None: context.configure( url=config.get_main_option("sqlalchemy.url"), target_metadata=target_metadata, include_schemas=True, version_table_schema=schema, literal_binds=True, ) with context.begin_transaction(): context.run_migrations() def run_migrations_online() -> None: connectable = engine_from_config( config.get_section(config.config_ini_section, {}), prefix="sqlalchemy.", poolclass=pool.NullPool, ) with connectable.connect() as connection: connection.exec_driver_sql(f'CREATE SCHEMA IF NOT EXISTS "{schema}"') connection.commit() context.configure( connection=connection, target_metadata=target_metadata, include_schemas=True, version_table_schema=schema, ) with context.begin_transaction(): context.run_migrations() if context.is_offline_mode(): run_migrations_offline() else: run_migrations_online()