feat: 添加配置文件迁移阶段

This commit is contained in:
RockChinQ
2024-03-16 20:27:17 +08:00
parent 302d86056d
commit f91c9015bc
7 changed files with 179 additions and 78 deletions

View File

@@ -5,11 +5,12 @@ from ..audit import identifier
from . import stage
# 引入启动阶段实现以便注册
from .stages import load_config, setup_logger, build_app
from .stages import load_config, setup_logger, build_app, migrate
stage_order = [
"LoadConfigStage",
"MigrationStage",
"SetupLoggerStage",
"BuildAppStage"
]

View File

@@ -26,4 +26,4 @@ class LoadConfigStage(stage.BootingStage):
await ap.sensitive_meta.dump_config()
ap.adapter_qq_botpy_meta = await config.load_json_config("data/metadata/adapter-qq-botpy.json", "templates/metadata/adapter-qq-botpy.json")
await ap.adapter_qq_botpy_meta.dump_config()
await ap.adapter_qq_botpy_meta.dump_config()

View File

@@ -0,0 +1,28 @@
from __future__ import annotations
import importlib
from .. import stage, app
from ...config import migration
from ...config.migrations import m1_sensitive_word_migration
@stage.stage_class("MigrationStage")
class MigrationStage(stage.BootingStage):
"""迁移阶段
"""
async def run(self, ap: app.Application):
"""启动
"""
migrations = migration.preregistered_migrations
# 按照迁移号排序
migrations.sort(key=lambda x: x.number)
for migration_cls in migrations:
migration_instance = migration_cls(ap)
if await migration_instance.need_migrate():
await migration_instance.run()