Files
face-attendance/migrations/env.py
2026-05-01 21:24:21 +03:30

53 lines
1.2 KiB
Python

from __future__ import annotations
from logging.config import fileConfig
from alembic import context
from flask import current_app
config = context.config
if config.config_file_name is not None:
fileConfig(config.config_file_name)
target_db = current_app.extensions["migrate"].db
target_metadata = target_db.metadata
def get_engine():
try:
return target_db.get_engine()
except TypeError:
return target_db.engine
def get_engine_url() -> str:
return str(get_engine().url).replace("%", "%%")
def run_migrations_offline() -> None:
context.configure(
url=get_engine_url(),
target_metadata=target_metadata,
literal_binds=True,
dialect_opts={"paramstyle": "named"},
compare_type=True,
)
with context.begin_transaction():
context.run_migrations()
def run_migrations_online() -> None:
with get_engine().connect() as connection:
context.configure(connection=connection, target_metadata=target_metadata, compare_type=True)
with context.begin_transaction():
context.run_migrations()
if context.is_offline_mode():
run_migrations_offline()
else:
run_migrations_online()