aboutsummaryrefslogtreecommitdiff
path: root/utils/shortcuts/error.go
diff options
context:
space:
mode:
Diffstat (limited to 'utils/shortcuts/error.go')
-rw-r--r--utils/shortcuts/error.go65
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)
+}