Refactor moveOrgFileHandler to retrieve source and target files by path, improving error handling for file not found scenarios
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user