aboutsummaryrefslogtreecommitdiff
path: root/utils/shortcuts/error.go
blob: 71fa4bdc0540c4d658efce8c559f8c70be82ac55 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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)
}