36 lines
934 B
Go
36 lines
934 B
Go
package handler
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
"spend-sparrow/db"
|
|
"spend-sparrow/service"
|
|
"spend-sparrow/utils"
|
|
"strings"
|
|
)
|
|
|
|
func handleError(w http.ResponseWriter, r *http.Request, err error) {
|
|
switch {
|
|
case errors.Is(err, service.ErrUnauthorized):
|
|
utils.TriggerToastWithStatus(w, r, "error", "You are not autorized to perform this operation.", http.StatusUnauthorized)
|
|
return
|
|
case errors.Is(err, service.ErrBadRequest):
|
|
utils.TriggerToastWithStatus(w, r, "error", extractErrorMessage(err), http.StatusBadRequest)
|
|
return
|
|
case errors.Is(err, db.ErrNotFound):
|
|
utils.TriggerToastWithStatus(w, r, "error", extractErrorMessage(err), http.StatusNotFound)
|
|
return
|
|
}
|
|
|
|
utils.TriggerToastWithStatus(w, r, "error", "Internal Server Error", http.StatusInternalServerError)
|
|
}
|
|
|
|
func extractErrorMessage(err error) string {
|
|
errMsg := err.Error()
|
|
if errMsg == "" {
|
|
return ""
|
|
}
|
|
|
|
return strings.SplitN(errMsg, ":", 2)[0]
|
|
}
|