leaf-library-3/internal/base/server/error.go

52 lines
1.2 KiB
Go
Raw Normal View History

2024-12-06 15:38:22 +00:00
package server
import (
"errors"
2024-12-10 10:22:14 +00:00
"leafdev.top/Leaf/leaf-library-3/internal/pkg/response"
2024-12-06 15:38:22 +00:00
"net/http"
2024-12-10 10:22:14 +00:00
errs2 "leafdev.top/Leaf/leaf-library-3/internal/errs"
2024-12-06 15:38:22 +00:00
"github.com/gofiber/fiber/v2"
"gorm.io/gorm"
"leafdev.top/Leaf/leaf-library-3/internal/base/logger"
"leafdev.top/Leaf/leaf-library-3/internal/pkg/validator"
)
func errorConverter(logger *logger.Logger, ctx *fiber.Ctx, err error) error {
status := http.StatusInternalServerError
if err == nil {
2024-12-10 10:22:14 +00:00
return response.Ctx(ctx).Error(errs2.ErrInternalServerError).Status(status).Send()
2024-12-06 15:38:22 +00:00
}
2024-12-10 10:22:14 +00:00
var errorMsg response.IError
2024-12-06 15:38:22 +00:00
switch {
// 404
//case errors.Is(err, fiber.ErrNotFound):
// status = http.StatusNotFound
// errorMsg = errs.RouteNotFound
case errors.Is(err, fiber.ErrUnprocessableEntity):
status = http.StatusUnprocessableEntity
errorMsg = err
2024-12-10 10:22:14 +00:00
case errors.Is(err, errs2.ErrPermissionDenied):
2024-12-06 15:38:22 +00:00
status = http.StatusForbidden
case errors.Is(err, validator.ErrValidationFailed):
status = http.StatusBadRequest
case errors.Is(err, gorm.ErrRecordNotFound):
2024-12-10 10:22:14 +00:00
errorMsg = errs2.ErrNotFound
2024-12-06 18:44:32 +00:00
status = http.StatusNotFound
2024-12-06 15:38:22 +00:00
default:
logger.Sugar.Errorf("fiber error: %s", err)
2024-12-10 10:22:14 +00:00
errorMsg = errs2.UnknownError
2024-12-06 15:38:22 +00:00
}
2024-12-10 10:22:14 +00:00
return response.Ctx(ctx).Status(status).Error(errorMsg).Send()
2024-12-06 15:38:22 +00:00
}