Spaces:
Runtime error
Runtime error
File size: 2,693 Bytes
b025147 7e1e123 b025147 7e1e123 b025147 7e1e123 b025147 7e1e123 b025147 b55a115 b025147 7e1e123 b025147 7e1e123 b025147 4542d62 b55a115 4542d62 b55a115 b025147 7e1e123 b025147 | 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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | package utils
import (
"errors"
"abdanhafidz.com/go-boilerplate/models/dto"
http_error "abdanhafidz.com/go-boilerplate/models/error"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
func ResponseOK[Tdata any, TMetaData any](c *gin.Context, metaData TMetaData, data Tdata) {
c.JSON(200, dto.SuccessResponse[Tdata]{
Status: "success",
Data: data,
Message: "Data retrieved Successfully!",
MetaData: metaData,
})
}
func ResponseFAILED[TMetaData any](c *gin.Context, metaData TMetaData, err error) {
if errors.Is(err, http_error.BAD_REQUEST_ERROR) {
c.JSON(400, dto.ErrorResponse{
Status: "error",
Error: err,
Message: "Invalid request format!",
MetaData: metaData,
})
return
} else if errors.Is(err, http_error.INTERNAL_SERVER_ERROR) {
c.JSON(500, dto.ErrorResponse{
Status: "error",
Error: err,
Message: "Internal Server Error!",
MetaData: metaData,
})
return
} else if errors.Is(err, http_error.UNAUTHORIZED) {
c.JSON(401, dto.ErrorResponse{
Status: "error",
Error: err,
Message: "Unauthorized, you don't have permission to access this service!",
MetaData: metaData,
})
return
} else if errors.Is(err, http_error.NOT_FOUND_ERROR) || errors.Is(err, gorm.ErrRecordNotFound) {
c.JSON(404, dto.ErrorResponse{
Status: "error",
Error: err,
Message: "There is not data with given credential / given parameter!",
MetaData: metaData,
})
return
} else if errors.Is(err, http_error.TIMEOUT) {
c.JSON(504, dto.ErrorResponse{
Status: "error",
Error: err,
Message: "Server took to long to respond!",
MetaData: metaData,
})
return
} else if errors.Is(err, http_error.FORBIDDEN_ERROR) || errors.Is(err, http_error.INVALID_CODE) {
c.JSON(403, dto.ErrorResponse{
Status: "error",
Error: err,
Message: err.Error(),
MetaData: metaData,
})
return
} else if errors.Is(err, http_error.EVENT_START_DATE_IN_PAST) ||
errors.Is(err, http_error.EVENT_START_DATE_INVALID) ||
errors.Is(err, http_error.EVENT_END_DATE_INVALID) ||
errors.Is(err, http_error.INVALID_DATE_FORMAT) {
c.JSON(400, dto.ErrorResponse{
Status: "error",
Error: err,
Message: err.Error(),
MetaData: metaData,
})
return
} else {
c.JSON(405, dto.ErrorResponse{
Status: "error",
Error: err,
Message: err.Error(),
MetaData: metaData,
})
return
}
}
func SendResponse[Tdata any, TMetaData any](c *gin.Context, metaData TMetaData, data Tdata, err error) {
if !c.IsAborted() {
if err != nil {
ResponseFAILED(c, metaData, err)
c.Abort()
return
} else {
ResponseOK(c, metaData, data)
c.Abort()
return
}
}
}
|