🎨 调整旧版数据库加载逻辑 (#212)

This commit is contained in:
uy/sun 2023-03-09 17:58:26 +08:00 committed by GitHub
parent 6a28f1175e
commit 9581887994
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 23 additions and 14 deletions

View File

@ -25,8 +25,6 @@ def get_config_path() -> tuple[str, str]:
else:
working_dir = os.getcwd()
data_dir = path.join(working_dir, "data")
if not path.isdir(data_dir):
os.makedirs(data_dir)
old_path = path.join(data_dir, "hk_reporter.json")
new_path = path.join(data_dir, "bison.json")
deprecated_maker_path = path.join(data_dir, "bison.json.deprecated")
@ -36,6 +34,7 @@ def get_config_path() -> tuple[str, str]:
def drop():
config = Config()
if plugin_config.bison_config_path:
data_dir = plugin_config.bison_config_path
else:
@ -252,7 +251,7 @@ def start_up():
return
if not (search_res := config.kv_config.search(Query().name == "version")):
config.kv_config.insert({"name": "version", "value": config.migrate_version})
elif search_res[0].get("value") < config.migrate_version:
elif search_res[0].get("value") < config.migrate_version: # type: ignore
query = Query()
version_query = query.name == "version"
cur_version = search_res[0].get("value")
@ -268,6 +267,3 @@ def start_up():
config.kv_config.update({"value": config.migrate_version}, version_query)
# do migration
config.update_send_cache()
config = Config()

View File

@ -2,11 +2,12 @@ from nonebot.log import logger
from nonebot_plugin_datastore.db import get_engine
from sqlalchemy.ext.asyncio.session import AsyncSession
from .config_legacy import ConfigContent, config, drop
from .config_legacy import Config, ConfigContent, drop
from .db_model import Subscribe, Target, User
async def data_migrate():
config = Config()
if config.available:
logger.warning("You are still using legacy db, migrating to sqlite")
all_subs: list[ConfigContent] = list(

View File

@ -17,11 +17,10 @@ def config_legacy(app: App, use_legacy_config):
from nonebot_bison.config import config_legacy as config
config.start_up()
yield config.Config()
config.Config().db.close()
legacy_config = Path(config.get_config_path()[0])
legacy_config.unlink(missing_ok=True)
def test_create_and_get(config_legacy: "Config", app: App):

View File

@ -1,9 +1,10 @@
async def test_migration(use_legacy_config):
from nonebot_plugin_datastore.db import init_db
from nonebot_bison.config.config_legacy import config as config_legacy
from nonebot_bison.config.config_legacy import Config
from nonebot_bison.config.db_config import config
config_legacy = Config()
config_legacy.add_subscribe(
user=123,
user_type="group",
@ -57,9 +58,10 @@ async def test_migration(use_legacy_config):
async def test_migrate_dup(use_legacy_config):
from nonebot_plugin_datastore.db import init_db
from nonebot_bison.config.config_legacy import config as config_legacy
from nonebot_bison.config.config_legacy import Config
from nonebot_bison.config.db_config import config
config_legacy = Config()
config_legacy.add_subscribe(
user=123,
user_type="group",

View File

@ -84,9 +84,20 @@ async def init_scheduler(app: App):
async def use_legacy_config(app: App):
import aiofiles
from nonebot_bison.config.config_legacy import config, get_config_path
from nonebot_bison.config.config_legacy import Config, get_config_path
from nonebot_bison.utils import Singleton
async with aiofiles.open(get_config_path()[0], "w") as f:
# 默认不创建配置所在的文件夹
# 如果需要测试需要手动创建相关文件夹
path = Path(get_config_path()[0])
path.parent.mkdir(parents=True, exist_ok=True)
async with aiofiles.open(path, "w") as f:
await f.write("{}")
config._do_init()
Config()._do_init()
yield
# 清除单例的缓存
Singleton._instances.clear()