diff options
Diffstat (limited to 'utils/shortcuts/error.go')
| -rw-r--r-- | utils/shortcuts/error.go | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/utils/shortcuts/error.go b/utils/shortcuts/error.go new file mode 100644 index 0000000..71fa4bd --- /dev/null +++ b/utils/shortcuts/error.go @@ -0,0 +1,65 @@ +package shortcuts + +import ( + "dove/enums" + "dove/types" + + "github.com/gofiber/fiber/v2" +) + +var statusMap = map[enums.ErrorKind]int{ + enums.BadRequest: fiber.StatusBadRequest, + enums.Forbidden: fiber.StatusForbidden, + enums.Internal: fiber.StatusInternalServerError, + enums.NotFound: fiber.StatusNotFound, + enums.Unauthorized: fiber.StatusUnauthorized, + enums.Unprocessable: fiber.StatusUnprocessableEntity, +} + +func ServiceError(kind enums.ErrorKind, message string) *types.ServiceError { + return &types.ServiceError{ + Kind: kind, + Message: message, + } +} + +func HandleError(context *fiber.Ctx, serviceError *types.ServiceError) error { + statusCode, exists := statusMap[serviceError.Kind] + if !exists { + statusCode = fiber.StatusInternalServerError + } + + return RenderWithStatus(context, "error", fiber.Map{ + "ErrorMessage": serviceError.Message, + }, statusCode) +} + +func BadRequest(context *fiber.Ctx, err error) error { + return RenderWithStatus(context, "error", fiber.Map{ + "ErrorMessage": err.Error(), + }, fiber.StatusBadRequest) +} + +func Forbidden(context *fiber.Ctx, err error) error { + return RenderWithStatus(context, "error", fiber.Map{ + "ErrorMessage": err.Error(), + }, fiber.StatusForbidden) +} + +func InternalServerError(context *fiber.Ctx, err error) error { + return RenderWithStatus(context, "error", fiber.Map{ + "ErrorMessage": err.Error(), + }, fiber.StatusInternalServerError) +} + +func NotFound(context *fiber.Ctx, err error) error { + return RenderWithStatus(context, "error", fiber.Map{ + "ErrorMessage": err.Error(), + }, fiber.StatusNotFound) +} + +func Unauthorized(context *fiber.Ctx, err error) error { + return RenderWithStatus(context, "error", fiber.Map{ + "ErrorMessage": err.Error(), + }, fiber.StatusUnauthorized) +} |
