From 1d73baf3d89e634bdf4cd0bbc507a9281c5d819e Mon Sep 17 00:00:00 2001 From: Stephen Hu Date: Tue, 25 Mar 2025 16:30:25 +0800 Subject: [PATCH] Feat: improve '/mv' '/list' API performance (#6502) ### What problem does this PR solve? 1. for /mv API use get by ids to avoid O(n) DB IO 2. for /list remove one useless call ### Type of change - [x] Performance Improvement --- api/apps/file_app.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/api/apps/file_app.py b/api/apps/file_app.py index dd4e6dea1..ff78198c4 100644 --- a/api/apps/file_app.py +++ b/api/apps/file_app.py @@ -181,7 +181,7 @@ def list_files(): current_user.id, pf_id, page_number, items_per_page, orderby, desc, keywords) parent_folder = FileService.get_parent_folder(pf_id) - if not FileService.get_parent_folder(pf_id): + if not parent_folder: return get_json_result(message="File not found!") return get_json_result(data={"total": total, "files": files, "parent_folder": parent_folder.to_json()}) @@ -355,9 +355,14 @@ def move(): try: file_ids = req["src_file_ids"] parent_id = req["dest_file_id"] + files = FileService.get_by_ids(file_ids) + files_dict = {} + for file in files: + files_dict[file.id] = file + for file_id in file_ids: - e, file = FileService.get_by_id(file_id) - if not e: + file = files_dict[file_id] + if not file: return get_data_error_result(message="File or Folder not found!") if not file.tenant_id: return get_data_error_result(message="Tenant not found!")