mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-06-04 02:26:11 +08:00
50 lines
1.8 KiB
Python
50 lines
1.8 KiB
Python
from nonebot.log import logger
|
|
from nonebot_plugin_datastore.db import get_engine, post_db_init, pre_db_init
|
|
from sqlalchemy import inspect, text
|
|
|
|
from .config.config_legacy import start_up as legacy_db_startup
|
|
from .config.db_migration import data_migrate
|
|
from .scheduler.manager import init_scheduler
|
|
|
|
|
|
@pre_db_init
|
|
async def pre():
|
|
def _has_table(conn, table_name):
|
|
insp = inspect(conn)
|
|
return insp.has_table(table_name)
|
|
|
|
async with get_engine().begin() as conn:
|
|
if not await conn.run_sync(_has_table, "alembic_version"):
|
|
logger.debug("未发现默认版本数据库,开始初始化")
|
|
return
|
|
|
|
logger.debug("发现默认版本数据库,开始检查版本")
|
|
t = await conn.scalar(text("select version_num from alembic_version"))
|
|
if t not in [
|
|
"4a46ba54a3f3", # alter_type
|
|
"5f3370328e44", # add_time_weight_table
|
|
"0571870f5222", # init_db
|
|
"a333d6224193", # add_last_scheduled_time
|
|
"c97c445e2bdb", # add_constraint
|
|
]:
|
|
logger.warning(f"当前数据库版本:{t},不是插件的版本,已跳过。")
|
|
return
|
|
|
|
logger.debug(f"当前数据库版本:{t},是插件的版本,开始迁移。")
|
|
# 删除可能存在的版本数据库
|
|
if await conn.run_sync(_has_table, "nonebot_bison_alembic_version"):
|
|
await conn.execute(text("drop table nonebot_bison_alembic_version"))
|
|
|
|
await conn.execute(text("alter table alembic_version rename to nonebot_bison_alembic_version"))
|
|
|
|
|
|
@post_db_init
|
|
async def post():
|
|
# legacy db
|
|
legacy_db_startup()
|
|
# migrate data
|
|
await data_migrate()
|
|
# init scheduler
|
|
await init_scheduler()
|
|
logger.info("nonebot-bison bootstrap done")
|