| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import asyncio
- from alembic import context
- from zhifu.core.config import Settings
- from zhifu.core.database import Base, create_engine
- from zhifu.modules.after_sales import models # noqa: F401
- from zhifu.modules.agent_runtime import models as agent_models # noqa: F401
- from zhifu.modules.billing import models as billing_models # noqa: F401
- from zhifu.modules.channels import models as channel_models # noqa: F401
- from zhifu.modules.conversations import models as conversation_models # noqa: F401
- from zhifu.modules.identity import access_models # noqa: F401
- from zhifu.modules.identity.models import Store, Tenant # noqa: F401
- from zhifu.modules.integrations import models as integration_models # noqa: F401
- from zhifu.modules.knowledge import models as knowledge_models # noqa: F401
- from zhifu.modules.memory import models as memory_models # noqa: F401
- from zhifu.modules.merchant import models as merchant_models # noqa: F401
- from zhifu.modules.notifications import models as notification_models # noqa: F401
- from zhifu.modules.platform import models as platform_models # noqa: F401
- from zhifu.modules.storefront import models as storefront_models # noqa: F401
- target_metadata = Base.metadata
- def run_migrations(connection):
- context.configure(connection=connection, target_metadata=target_metadata, compare_type=True)
- with context.begin_transaction():
- context.run_migrations()
- async def run_online():
- engine = create_engine(Settings())
- try:
- async with engine.connect() as connection:
- await connection.run_sync(run_migrations)
- finally:
- await engine.dispose()
- if context.is_offline_mode():
- context.configure(
- url=Settings().database_url.get_secret_value(),
- target_metadata=target_metadata,
- literal_binds=True,
- dialect_opts={"paramstyle": "named"},
- )
- with context.begin_transaction():
- context.run_migrations()
- else:
- asyncio.run(run_online())
|