feat: auto-delete node folder when deleting LocalAiNode
- Override delete method in LocalAiNode to delete corresponding node folder
- Add _delete_node_folder helper function to remove node directory
- Import shutil module for directory removal
- Node folder at ai/nodes/{node_type}/ will be automatically deleted when node record is deleted
This commit is contained in:
parent
5066b09af6
commit
964f65dc1d
@ -4,6 +4,7 @@
|
||||
from typing import Dict, Any
|
||||
from pathlib import Path
|
||||
import json
|
||||
import shutil
|
||||
import jingrow
|
||||
from jingrow.model.page import Page
|
||||
from jingrow.utils.path import get_jingrow_root
|
||||
@ -36,6 +37,20 @@ class LocalAiNode(Page):
|
||||
if updated_data.get('node_type'):
|
||||
_sync_node_to_json_file(updated_data)
|
||||
return result
|
||||
|
||||
def delete(self, name: str) -> Dict[str, Any]:
|
||||
"""删除节点记录,并删除对应的节点文件夹"""
|
||||
# 在删除前获取节点数据,以便删除对应的文件夹
|
||||
node_res = self.get(name)
|
||||
if node_res.get('success'):
|
||||
node_data = node_res.get('data', {})
|
||||
node_type = node_data.get('node_type')
|
||||
if node_type:
|
||||
# 删除节点文件夹
|
||||
_delete_node_folder(node_type)
|
||||
|
||||
# 调用父类的 delete 方法删除记录
|
||||
return super().delete(name)
|
||||
|
||||
|
||||
def _sync_node_to_json_file(node_data: Dict[str, Any]) -> bool:
|
||||
@ -121,3 +136,35 @@ def _sync_node_to_json_file(node_data: Dict[str, Any]) -> bool:
|
||||
# 静默失败,不影响主流程
|
||||
jingrow.log_error("同步节点到 JSON 文件失败", str(e), exc=e)
|
||||
return False
|
||||
|
||||
|
||||
def _delete_node_folder(node_type: str) -> bool:
|
||||
"""
|
||||
删除节点文件夹(LocalAiNode 类的辅助函数)
|
||||
当删除 Local Ai Node 时,自动删除对应的节点文件夹
|
||||
|
||||
Args:
|
||||
node_type: 节点类型,对应文件夹名称
|
||||
|
||||
Returns:
|
||||
bool: 删除是否成功
|
||||
"""
|
||||
try:
|
||||
if not node_type:
|
||||
return False
|
||||
|
||||
# 获取节点目录路径
|
||||
jingrow_root = get_jingrow_root()
|
||||
nodes_root = jingrow_root / "ai" / "nodes"
|
||||
node_dir = nodes_root / node_type
|
||||
|
||||
# 如果文件夹存在,则删除
|
||||
if node_dir.exists() and node_dir.is_dir():
|
||||
shutil.rmtree(node_dir)
|
||||
return True
|
||||
|
||||
return False
|
||||
except Exception as e:
|
||||
# 静默失败,不影响主流程
|
||||
jingrow.log_error("删除节点文件夹失败", str(e), exc=e)
|
||||
return False
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user