From 205b3f9cfc8ca2bef1c88064e1a9686b497215ef Mon Sep 17 00:00:00 2001 From: kang2453 Date: Fri, 3 Jan 2025 14:44:34 +0900 Subject: [PATCH 1/3] feat: add file manager state cleanup and download URL update functions Signed-off-by: kang2453 --- src/migration/v2_0_3.py | 77 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/src/migration/v2_0_3.py b/src/migration/v2_0_3.py index b38b0ef..2f808bc 100644 --- a/src/migration/v2_0_3.py +++ b/src/migration/v2_0_3.py @@ -51,6 +51,79 @@ def dashboard_public_dashboard_delete_data_table(mongo_client: MongoCustomClient mongo_client.delete_many("DASHBOARD", "public_data_table", {}) + +@print_log +def file_manager_state_remove_state_project_id(mongo_client: MongoCustomClient): + items = mongo_client.update_many("FILE-MANAGER", "file", {}, {"$unset":{"state":"", "project_id":""}}) + +@print_log +def file_manager_change_download_url(mongo_client: MongoCustomClient): + file_infos = mongo_client.find("FILE-MANAGER","file",{},{}) + + user_files = [] + files = [] + + delete_user_files=[] + + + for file_info in file_infos: + resource_group = file.get("resource_group") + domain_id = file.get("domain_id") + workspace_id = file.get("workspace_id") + user_id = file.get("user_id") + file_id = file.get("file_id") + + if resource_group == "SYSTEM": + download_url = "/files/public/" + file_id + elif resource_group == "DOMAIN": + if "user_id" in file_info: + download_url = "/files/domain/" + domain_id + "/user/"+ user_id + "/" + file_id + file_info["download_url"] = download_url + # `state`와 `project_id` 키 삭제 + if "state" in file_info: + del file_info["state"] + if "project_id" in file_info: + del file_info["project_id"] + + user_files.append(file_info) + delete_user_files.append(file_id) + continue + else: + download_url = "/files/domain/" + domain_id + "/" + file_id + elif resource_group == "WORKSPACE": + download_url = "/files/domain/" + domain_id + "/workspace/" + workspace_id + "/" + file_id + elif resource_group == "PROJECT": + download_url = "/files/domain/" + domain_id + "/workspace/" + workspace_id + "/" + file_id + elif resource_group == "USER": + download_url = "/files/domain/" + domain_id + "/user/"+ user_id + "/" + file_id + + files.append( + UpdateOne( + {"_id":file_info["file"]}, + { + "$set": { + "download_url": download_url + } + }, + ) + ) + + if delete_user_files: # 삭제할 파일 ID가 있는 경우만 실행 + mongo_client.delete_many( + "FILE-MANAGER", # 데이터베이스 이름 + "file", # 컬렉션 이름 + {"file_id": {"$in": delete_user_files}} # 조건: file_id가 리스트 안에 포함된 경우 + ) + + if user_files: + mongo_client.bulk_write("FILE-MANAGER", "user_file", user_files) + + mongo_client.bulk_write("FILE-MANAGER", "file", files) + + + + + def main(file_path): mongo_client: MongoCustomClient = MongoCustomClient(file_path, "v2.0.3") @@ -64,3 +137,7 @@ def main(file_path): dashboard_public_folder_delete_folder(mongo_client) dashboard_public_widget_delete_widget(mongo_client) dashboard_public_dashboard_delete_data_table(mongo_client) + + # File Manager Service + file_manager_state_remove_state_project_id(mongo_client) + file_manager_change_download_url(mongo_client) From 07cd92c46da0f687cb0f65b9e2e2aa4ad32509dd Mon Sep 17 00:00:00 2001 From: kang2453 Date: Fri, 3 Jan 2025 15:01:05 +0900 Subject: [PATCH 2/3] feat: add file manager configuration and clean up download URL function Signed-off-by: kang2453 --- src/conf/default_conf.py | 1 + src/migration/v2_0_3.py | 9 +-------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/conf/default_conf.py b/src/conf/default_conf.py index 1fa50d9..29cb266 100644 --- a/src/conf/default_conf.py +++ b/src/conf/default_conf.py @@ -15,6 +15,7 @@ "PLUGIN": "plugin", "CONFIG": "config", "INVENTORY": "inventory", + "FILE-MANAGER": "file-manager", } CONNECTION_URI = "localhost:27017" diff --git a/src/migration/v2_0_3.py b/src/migration/v2_0_3.py index 2f808bc..f35b0a3 100644 --- a/src/migration/v2_0_3.py +++ b/src/migration/v2_0_3.py @@ -64,8 +64,7 @@ def file_manager_change_download_url(mongo_client: MongoCustomClient): files = [] delete_user_files=[] - - + for file_info in file_infos: resource_group = file.get("resource_group") domain_id = file.get("domain_id") @@ -79,12 +78,6 @@ def file_manager_change_download_url(mongo_client: MongoCustomClient): if "user_id" in file_info: download_url = "/files/domain/" + domain_id + "/user/"+ user_id + "/" + file_id file_info["download_url"] = download_url - # `state`와 `project_id` 키 삭제 - if "state" in file_info: - del file_info["state"] - if "project_id" in file_info: - del file_info["project_id"] - user_files.append(file_info) delete_user_files.append(file_id) continue From 9579020361470b1fa74ff7dc529966ca3d6cbb31 Mon Sep 17 00:00:00 2001 From: kang2453 Date: Fri, 3 Jan 2025 15:02:51 +0900 Subject: [PATCH 3/3] feat: disable file manager state cleanup and download URL update functions Signed-off-by: kang2453 --- src/migration/v2_0_3.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/migration/v2_0_3.py b/src/migration/v2_0_3.py index f35b0a3..f74d27d 100644 --- a/src/migration/v2_0_3.py +++ b/src/migration/v2_0_3.py @@ -132,5 +132,5 @@ def main(file_path): dashboard_public_dashboard_delete_data_table(mongo_client) # File Manager Service - file_manager_state_remove_state_project_id(mongo_client) - file_manager_change_download_url(mongo_client) + #file_manager_state_remove_state_project_id(mongo_client) + #file_manager_change_download_url(mongo_client)