From 6db5ad269741b5edf390b9ea20e18f606f585fc8 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 26 Nov 2023 21:40:43 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E6=8F=92=E4=BB=B6=E9=87=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/plugin.py | 9 +++++++++ app/core/plugin.py | 8 ++++++++ app/db/systemconfig_oper.py | 14 ++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/app/api/endpoints/plugin.py b/app/api/endpoints/plugin.py index 87ba7ca7..b3e8b241 100644 --- a/app/api/endpoints/plugin.py +++ b/app/api/endpoints/plugin.py @@ -94,6 +94,15 @@ def plugin_page(plugin_id: str, _: schemas.TokenPayload = Depends(verify_token)) return PluginManager().get_plugin_page(plugin_id) +@router.get("/reset/{plugin_id}", summary="重置插件配置", response_model=schemas.Response) +def reset_plugin(plugin_id: str, _: schemas.TokenPayload = Depends(verify_token)) -> List[dict]: + """ + 根据插件ID重置插件配置 + """ + PluginManager().delete_plugin_config(plugin_id) + return schemas.Response(success=True) + + @router.get("/{plugin_id}", summary="获取插件配置") def plugin_config(plugin_id: str, _: schemas.TokenPayload = Depends(verify_token)) -> dict: """ diff --git a/app/core/plugin.py b/app/core/plugin.py index 872ecde3..f29171ca 100644 --- a/app/core/plugin.py +++ b/app/core/plugin.py @@ -147,6 +147,14 @@ class PluginManager(metaclass=Singleton): return False return self.systemconfig.set(self._config_key % pid, conf) + def delete_plugin_config(self, pid: str) -> bool: + """ + 删除插件配置 + """ + if not self._plugins.get(pid): + return False + return self.systemconfig.delete(self._config_key % pid) + def get_plugin_form(self, pid: str) -> Tuple[List[dict], Dict[str, Any]]: """ 获取插件表单 diff --git a/app/db/systemconfig_oper.py b/app/db/systemconfig_oper.py index 40ae04ee..88d3e149 100644 --- a/app/db/systemconfig_oper.py +++ b/app/db/systemconfig_oper.py @@ -56,6 +56,20 @@ class SystemConfigOper(DbOper, metaclass=Singleton): return self.__SYSTEMCONF return self.__SYSTEMCONF.get(key) + def delete(self, key: Union[str, SystemConfigKey]): + """ + 删除系统设置 + """ + if isinstance(key, SystemConfigKey): + key = key.value + # 更新内存 + self.__SYSTEMCONF.pop(key, None) + # 写入数据库 + conf = SystemConfig.get_by_key(self._db, key) + if conf: + conf.delete(self._db, conf.id) + return True + def __del__(self): if self._db: self._db.close()