From d4e0b1b27ff34779cbad9b80dc652b1547661ff9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20B=C3=B6sche?= Date: Sat, 7 Feb 2026 23:45:45 +0100 Subject: [PATCH] Refactor moveOrgFileHandler to retrieve source and target files by path, improving error handling for file not found scenarios --- go_cloud/internal/http/routes.go | 35 ++++++++++++-------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/go_cloud/internal/http/routes.go b/go_cloud/internal/http/routes.go index 17231ad..0bef3b2 100644 --- a/go_cloud/internal/http/routes.go +++ b/go_cloud/internal/http/routes.go @@ -2224,24 +2224,15 @@ func moveOrgFileHandler(w http.ResponseWriter, r *http.Request, db *database.DB, return } - // Get source file details before moving - sourceFiles, err := db.GetOrgFiles(r.Context(), orgID, userID, "/", "", 0, 1000) + // Get source file directly by path + sourceFile, err := db.GetOrgFileByPath(r.Context(), orgID, userID, req.SourcePath) if err != nil { - errors.LogError(r, err, "Failed to get org files") - errors.WriteError(w, errors.CodeInternal, "Server error", http.StatusInternalServerError) - return - } - - var sourceFile *database.File - for i := range sourceFiles { - if sourceFiles[i].Path == req.SourcePath { - sourceFile = &sourceFiles[i] - break + if err == sql.ErrNoRows { + errors.WriteError(w, errors.CodeInvalidArgument, "Source file not found", http.StatusNotFound) + return } - } - - if sourceFile == nil { - errors.WriteError(w, errors.CodeInvalidArgument, "Source file not found", http.StatusNotFound) + errors.LogError(r, err, "Failed to get source file") + errors.WriteError(w, errors.CodeInternal, "Server error", http.StatusInternalServerError) return } @@ -2261,13 +2252,13 @@ func moveOrgFileHandler(w http.ResponseWriter, r *http.Request, db *database.DB, // Determine new file name - check if target is a folder var newPath string - var targetFile *database.File - for i := range sourceFiles { - if sourceFiles[i].Path == req.TargetPath { - targetFile = &sourceFiles[i] - break - } + targetFile, err := db.GetOrgFileByPath(r.Context(), orgID, userID, req.TargetPath) + if err != nil && err != sql.ErrNoRows { + errors.LogError(r, err, "Failed to get target file") + errors.WriteError(w, errors.CodeInternal, "Server error", http.StatusInternalServerError) + return } + // If err == sql.ErrNoRows, targetFile is nil if targetFile != nil && targetFile.Type == "folder" { // Target is a folder, move file into it