env.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. from logging.config import fileConfig
  2. from alembic import context
  3. from app.bootstrap.settings import ModelGatewayServiceSettings
  4. from app.db.models import Base
  5. from sqlalchemy import engine_from_config, pool
  6. config = context.config
  7. if config.config_file_name is not None:
  8. fileConfig(config.config_file_name)
  9. config.set_main_option("sqlalchemy.url", ModelGatewayServiceSettings().database_url)
  10. target_metadata = Base.metadata
  11. def run_migrations_offline() -> None:
  12. url = config.get_main_option("sqlalchemy.url")
  13. context.configure(
  14. url=url,
  15. target_metadata=target_metadata,
  16. literal_binds=True,
  17. version_table="model_gateway_alembic_version",
  18. )
  19. with context.begin_transaction():
  20. context.run_migrations()
  21. def run_migrations_online() -> None:
  22. connectable = engine_from_config(
  23. config.get_section(config.config_ini_section, {}),
  24. prefix="sqlalchemy.",
  25. poolclass=pool.NullPool,
  26. )
  27. with connectable.connect() as connection:
  28. context.configure(
  29. connection=connection,
  30. target_metadata=target_metadata,
  31. version_table="model_gateway_alembic_version",
  32. )
  33. with context.begin_transaction():
  34. context.run_migrations()
  35. if context.is_offline_mode():
  36. run_migrations_offline()
  37. else:
  38. run_migrations_online()