env.py 1.1 KB

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