Refactor moveUserFileHandler to simplify source and target file retrieval; improve error handling for missing files.

This commit is contained in:
Leon Bösche
2026-01-15 13:39:47 +01:00
parent e97587634e
commit 9614c0e950

View File

@@ -4,6 +4,7 @@ import (
"archive/zip" "archive/zip"
"bytes" "bytes"
"context" "context"
"database/sql"
"encoding/json" "encoding/json"
"fmt" "fmt"
"io" "io"
@@ -1664,23 +1665,14 @@ func moveUserFileHandler(w http.ResponseWriter, r *http.Request, db *database.DB
} }
// Get source file details before moving // Get source file details before moving
sourceFiles, err := db.GetUserFiles(r.Context(), userID, "/", "", 0, 1000) sourceFile, err := db.GetUserFileByPath(r.Context(), userID, req.SourcePath)
if err != nil { if err != nil {
errors.LogError(r, err, "Failed to get user files") if err == sql.ErrNoRows {
errors.WriteError(w, errors.CodeInternal, "Server error", http.StatusInternalServerError) errors.WriteError(w, errors.CodeInvalidArgument, "Source file not found", http.StatusNotFound)
return return
}
var sourceFile *database.File
for i := range sourceFiles {
if sourceFiles[i].Path == req.SourcePath {
sourceFile = &sourceFiles[i]
break
} }
} errors.LogError(r, err, "Failed to get source file")
errors.WriteError(w, errors.CodeInternal, "Server error", http.StatusInternalServerError)
if sourceFile == nil {
errors.WriteError(w, errors.CodeInvalidArgument, "Source file not found", http.StatusNotFound)
return return
} }
@@ -1700,13 +1692,13 @@ func moveUserFileHandler(w http.ResponseWriter, r *http.Request, db *database.DB
// Determine new file name - check if target is a folder // Determine new file name - check if target is a folder
var newPath string var newPath string
var targetFile *database.File targetFile, err := db.GetUserFileByPath(r.Context(), userID, req.TargetPath)
for i := range sourceFiles { if err != nil && err != sql.ErrNoRows {
if sourceFiles[i].Path == req.TargetPath { errors.LogError(r, err, "Failed to get target file")
targetFile = &sourceFiles[i] errors.WriteError(w, errors.CodeInternal, "Server error", http.StatusInternalServerError)
break return
}
} }
// If err == sql.ErrNoRows, targetFile is nil
if targetFile != nil && targetFile.Type == "folder" { if targetFile != nil && targetFile.Type == "folder" {
// Target is a folder, move file into it // Target is a folder, move file into it