43 lines
2.0 KiB
Go
43 lines
2.0 KiB
Go
// Path: Backend/internal/httpx/api_project_errors.go
|
|
|
|
package httpx
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
|
|
bootstrapservice "moku-backend/internal/bootstrap"
|
|
)
|
|
|
|
func (routes apiRoutes) writeProjectFolderError(w http.ResponseWriter, r *http.Request, err error, operation string) {
|
|
switch {
|
|
case errors.Is(err, bootstrapservice.ErrProjectNotFound), errors.Is(err, bootstrapservice.ErrProjectFolderNotFound):
|
|
WriteError(w, http.StatusNotFound, RequestIDFromContext(r.Context()), "not_found", err.Error())
|
|
case errors.Is(err, bootstrapservice.ErrInvalidProjectFolderMove):
|
|
WriteError(w, http.StatusBadRequest, RequestIDFromContext(r.Context()), "invalid_request", err.Error())
|
|
default:
|
|
routes.cfg.Logger.Error(operation+" project folder", "error", err, "path", r.URL.Path)
|
|
message := "Failed to " + operation + " project folder."
|
|
if routes.cfg.Config.IsDevelopment() {
|
|
message = message + " " + err.Error()
|
|
}
|
|
WriteError(w, http.StatusInternalServerError, RequestIDFromContext(r.Context()), "project_folder_"+operation+"_failed", message)
|
|
}
|
|
}
|
|
|
|
func (routes apiRoutes) writeProjectTreeError(w http.ResponseWriter, r *http.Request, err error, operation string) {
|
|
switch {
|
|
case errors.Is(err, bootstrapservice.ErrProjectNotFound), errors.Is(err, bootstrapservice.ErrProjectFolderNotFound), errors.Is(err, bootstrapservice.ErrProjectItemNotFound):
|
|
WriteError(w, http.StatusNotFound, RequestIDFromContext(r.Context()), "not_found", err.Error())
|
|
case errors.Is(err, bootstrapservice.ErrInvalidProjectFolderMove), errors.Is(err, bootstrapservice.ErrInvalidProjectItemMove):
|
|
WriteError(w, http.StatusBadRequest, RequestIDFromContext(r.Context()), "invalid_request", err.Error())
|
|
default:
|
|
routes.cfg.Logger.Error(operation+" project tree", "error", err, "path", r.URL.Path)
|
|
message := "Failed to " + operation + " project tree."
|
|
if routes.cfg.Config.IsDevelopment() {
|
|
message = message + " " + err.Error()
|
|
}
|
|
WriteError(w, http.StatusInternalServerError, RequestIDFromContext(r.Context()), "project_tree_"+operation+"_failed", message)
|
|
}
|
|
}
|