File size: 2,716 Bytes
e5d8d3a
 
 
 
 
 
 
 
 
 
 
 
033070f
e5d8d3a
 
 
 
 
 
 
 
033070f
e5d8d3a
 
 
 
 
 
 
 
 
 
 
c8f3989
e5d8d3a
 
 
 
 
 
 
c8f3989
e5d8d3a
 
033070f
e5d8d3a
 
 
 
 
 
 
 
 
 
c8f3989
e5d8d3a
 
 
 
 
 
 
c8f3989
e5d8d3a
 
 
 
 
 
 
 
 
 
 
 
c8f3989
e5d8d3a
 
 
033070f
e5d8d3a
 
 
 
 
 
 
 
 
 
 
c8f3989
e5d8d3a
 
 
 
 
 
 
c8f3989
e5d8d3a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
"""文件夹管理 API"""
from backend.demo_folder import (
    get_all_folders,
    move_folder,
    rename_folder,
    delete_folder,
    create_folder,
)
from backend.api.utils import (
    get_demo_directory,
    handle_api_error,
    handle_api_success,
    require_admin,
)


def _move_folder_internal(demo_dir, path, target_path):
    """内部函数:移动文件夹"""
    return move_folder(demo_dir, path, target_path)


@require_admin
def rename_folder_api(rename_request):
    """
    重命名文件夹
    请求格式: { path: string, new_name: string }
    """
    path = rename_request.get('path')
    new_name = rename_request.get('new_name')
    
    if not path or not new_name:
        return {
            'success': False,
            'message': 'Missing required parameter: path or new_name'
        }
    
    try:
        demo_dir = get_demo_directory(create=False)
        result = rename_folder(demo_dir, path, new_name)
        return handle_api_success(result)
    except Exception as e:
        return handle_api_error('Rename failed', e)


@require_admin
def delete_folder_api(delete_request):
    """
    删除文件夹(移动到.deleted目录)
    请求格式: { path: string }
    """
    path = delete_request.get('path')
    
    if not path:
        return {
            'success': False,
            'message': 'Missing required parameter: path'
        }
    
    try:
        demo_dir = get_demo_directory(create=False)
        result = delete_folder(demo_dir, path)
        return handle_api_success(result)
    except Exception as e:
        return handle_api_error('Delete failed', e)


def list_all_folders():
    """
    获取所有文件夹列表(用于移动操作的选择器)
    返回格式: { folders: string[] }
    """
    try:
        demo_dir = get_demo_directory(create=False)
        folders = get_all_folders(demo_dir)
        return {'folders': folders}
    except Exception as e:
        handle_api_error("Failed to get folder list", e)
        return {'folders': []}


@require_admin
def create_folder_api(create_request):
    """
    创建新文件夹
    请求格式: { parent_path: string, folder_name: string }
    """
    parent_path = create_request.get('parent_path', '/')
    folder_name = create_request.get('folder_name')
    
    if not folder_name:
        return {
            'success': False,
            'message': 'Missing required parameter: folder_name'
        }
    
    try:
        demo_dir = get_demo_directory(create=False)
        result = create_folder(demo_dir, parent_path, folder_name)
        return handle_api_success(result)
    except Exception as e:
        return handle_api_error('Create failed', e)