2020-08-09 17:14:23 +02:00
|
|
|
"""Configure Alembic's migration environment."""
|
|
|
|
|
|
|
|
import os
|
|
|
|
from logging import config as log_config
|
|
|
|
|
|
|
|
import sqlalchemy as sa
|
|
|
|
from alembic import context
|
|
|
|
|
|
|
|
from urban_meal_delivery import config as umd_config
|
|
|
|
from urban_meal_delivery import db
|
|
|
|
|
|
|
|
|
|
|
|
# Disable the --sql option, a.k.a, the "offline mode".
|
|
|
|
if context.is_offline_mode():
|
|
|
|
raise NotImplementedError('The --sql option is not implemented in this project')
|
|
|
|
|
|
|
|
|
|
|
|
# Set up the default Python logger from the alembic.ini file.
|
|
|
|
log_config.fileConfig(context.config.config_file_name)
|
|
|
|
|
|
|
|
|
|
|
|
def include_object(obj, _name, type_, _reflected, _compare_to):
|
|
|
|
"""Only include the clean schema into --autogenerate migrations."""
|
2021-01-20 16:57:39 +01:00
|
|
|
if ( # noqa:WPS337
|
|
|
|
type_ in {'table', 'column'}
|
|
|
|
and hasattr(obj, 'schema') # noqa:WPS421 => fix for rare edge case
|
|
|
|
and obj.schema != umd_config.CLEAN_SCHEMA
|
|
|
|
):
|
2020-08-09 17:14:23 +02:00
|
|
|
return False
|
|
|
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
engine = sa.create_engine(umd_config.DATABASE_URI)
|
|
|
|
|
|
|
|
with engine.connect() as connection:
|
|
|
|
context.configure(
|
|
|
|
connection=connection,
|
|
|
|
include_object=include_object,
|
|
|
|
target_metadata=db.Base.metadata,
|
|
|
|
version_table='{alembic_table}{test_schema}'.format(
|
|
|
|
alembic_table=umd_config.ALEMBIC_TABLE,
|
|
|
|
test_schema=(f'_{umd_config.CLEAN_SCHEMA}' if os.getenv('TESTING') else ''),
|
|
|
|
),
|
|
|
|
version_table_schema=umd_config.ALEMBIC_TABLE_SCHEMA,
|
|
|
|
)
|
|
|
|
|
|
|
|
with context.begin_transaction():
|
|
|
|
context.run_migrations()
|