From dd7803c90af439a9a891b352cd5cc2de7ff934a5 Mon Sep 17 00:00:00 2001 From: thsrite Date: Tue, 12 Sep 2023 14:57:31 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=8D=B8=E8=BD=BD=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E6=97=B6=E5=88=A0=E9=99=A4=E6=8F=92=E4=BB=B6=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/plugin.py | 2 ++ app/db/models/plugin.py | 5 +++++ app/db/plugindata_oper.py | 7 +++++-- app/db/systemconfig_oper.py | 19 +++++++++++++++++-- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/app/api/endpoints/plugin.py b/app/api/endpoints/plugin.py index 47615c96..d0f824a4 100644 --- a/app/api/endpoints/plugin.py +++ b/app/api/endpoints/plugin.py @@ -101,6 +101,8 @@ def uninstall_plugin(plugin_id: str, if plugin == plugin_id: install_plugins.remove(plugin) break + # 删除插件配置 + SystemConfigOper().delete_by_key(plugin_id) # 保存 SystemConfigOper().set(SystemConfigKey.UserInstalledPlugins, install_plugins) # 重载插件管理器 diff --git a/app/db/models/plugin.py b/app/db/models/plugin.py index e060512a..16da8c96 100644 --- a/app/db/models/plugin.py +++ b/app/db/models/plugin.py @@ -26,6 +26,11 @@ class PluginData(Base): db.query(PluginData).filter(PluginData.plugin_id == plugin_id, PluginData.key == key).delete() Base.commit(db) + @staticmethod + def del_plugin_data_by_plugin_id(db: Session, plugin_id: str): + db.query(PluginData).filter(PluginData.plugin_id == plugin_id).delete() + Base.commit(db) + @staticmethod def get_plugin_data_by_plugin_id(db: Session, plugin_id: str): return db.query(PluginData).filter(PluginData.plugin_id == plugin_id).all() diff --git a/app/db/plugindata_oper.py b/app/db/plugindata_oper.py index 4f2c29c0..58f38184 100644 --- a/app/db/plugindata_oper.py +++ b/app/db/plugindata_oper.py @@ -43,13 +43,16 @@ class PluginDataOper(DbOper): return json.loads(data.value) return data.value - def del_data(self, plugin_id: str, key: str) -> Any: + def del_data(self, plugin_id: str, key: str = None) -> Any: """ 删除插件数据 :param plugin_id: 插件id :param key: 数据key """ - PluginData.del_plugin_data_by_key(self._db, plugin_id, key) + if key: + PluginData.del_plugin_data_by_key(self._db, plugin_id, key) + else: + PluginData.del_plugin_data_by_plugin_id(self._db, plugin_id) def truncate(self): """ diff --git a/app/db/systemconfig_oper.py b/app/db/systemconfig_oper.py index f4ef206f..2ccb1e81 100644 --- a/app/db/systemconfig_oper.py +++ b/app/db/systemconfig_oper.py @@ -3,6 +3,7 @@ from typing import Any, Union from app.db import DbOper, SessionFactory from app.db.models.systemconfig import SystemConfig +from app.db.plugindata_oper import PluginDataOper from app.schemas.types import SystemConfigKey from app.utils.object import ObjectUtils from app.utils.singleton import Singleton @@ -17,8 +18,11 @@ class SystemConfigOper(DbOper, metaclass=Singleton): 加载配置到内存 """ self._db = SessionFactory() + self._syscomconfig = SystemConfig() + # 插件数据 + self.plugindata = PluginDataOper(self._db) super().__init__(self._db) - for item in SystemConfig.list(self._db): + for item in self._syscomconfig.list(self._db): if ObjectUtils.is_obj(item.value): self.__SYSTEMCONF[item.key] = json.loads(item.value) else: @@ -37,7 +41,7 @@ class SystemConfigOper(DbOper, metaclass=Singleton): value = json.dumps(value) elif value is None: value = '' - conf = SystemConfig.get_by_key(self._db, key) + conf = self._syscomconfig.get_by_key(self._db, key) if conf: if value: conf.update(self._db, {"value": value}) @@ -57,6 +61,17 @@ class SystemConfigOper(DbOper, metaclass=Singleton): return self.__SYSTEMCONF return self.__SYSTEMCONF.get(key) + def delete_by_key(self, key: str = None) -> Any: + """ + 删除系统设置 + """ + if self.__SYSTEMCONF.get(f"plugin.{key}"): + del self.__SYSTEMCONF[f"plugin.{key}"] + # 删除系统配置 + self._syscomconfig.delete_by_key(db=self._db, key=f"plugin.{key}") + # 删除插件数据 + self.plugindata.del_data(plugin_id=key) + def __del__(self): if self._db: self._db.close()