"""文件夹管理 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)