Refactor moveUserFileHandler to simplify source and target file retrieval; improve error handling for missing files.
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
errors.LogError(r, err, "Failed to get source file")
|
||||||
var sourceFile *database.File
|
errors.WriteError(w, errors.CodeInternal, "Server error", http.StatusInternalServerError)
|
||||||
for i := range sourceFiles {
|
|
||||||
if sourceFiles[i].Path == req.SourcePath {
|
|
||||||
sourceFile = &sourceFiles[i]
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
||||||
|
|||||||
Reference in New Issue
Block a user