env.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from alembic import context
  2. from app.core.config import Settings
  3. from app.infrastructure.mysql.core_models import CoreBase
  4. from app.infrastructure.mysql.sessions import DatabaseName, build_mysql_url
  5. config = context.config
  6. target_metadata = CoreBase.metadata
  7. def run_migrations_offline() -> None:
  8. url = build_mysql_url(Settings(), DatabaseName.CORE)
  9. context.configure(
  10. url=url,
  11. target_metadata=target_metadata,
  12. literal_binds=True,
  13. dialect_opts={"paramstyle": "named"},
  14. compare_type=True,
  15. )
  16. with context.begin_transaction():
  17. context.run_migrations()
  18. def run_migrations_online() -> None:
  19. from sqlalchemy import create_engine
  20. engine = create_engine(build_mysql_url(Settings(), DatabaseName.CORE))
  21. with engine.connect() as connection:
  22. context.configure(
  23. connection=connection,
  24. target_metadata=target_metadata,
  25. compare_type=True,
  26. )
  27. with context.begin_transaction():
  28. context.run_migrations()
  29. if context.is_offline_mode():
  30. run_migrations_offline()
  31. else:
  32. run_migrations_online()