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()