Quellcode durchsuchen

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
tags/v0.18.0
Stephen Hu vor 7 Monaten
Ursprung
Commit
1d73baf3d8
Es ist kein Account mit der E-Mail-Adresse des Committers verbunden
1 geänderte Dateien mit 8 neuen und 3 gelöschten Zeilen
  1. 8
    3
      api/apps/file_app.py

+ 8
- 3
api/apps/file_app.py Datei anzeigen

current_user.id, pf_id, page_number, items_per_page, orderby, desc, keywords) current_user.id, pf_id, page_number, items_per_page, orderby, desc, keywords)


parent_folder = FileService.get_parent_folder(pf_id) 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(message="File not found!")


return get_json_result(data={"total": total, "files": files, "parent_folder": parent_folder.to_json()}) return get_json_result(data={"total": total, "files": files, "parent_folder": parent_folder.to_json()})
try: try:
file_ids = req["src_file_ids"] file_ids = req["src_file_ids"]
parent_id = req["dest_file_id"] 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: 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!") return get_data_error_result(message="File or Folder not found!")
if not file.tenant_id: if not file.tenant_id:
return get_data_error_result(message="Tenant not found!") return get_data_error_result(message="Tenant not found!")

Laden…
Abbrechen
Speichern