Spaces:
Running
Running
File size: 1,737 Bytes
ab82ffd c0722d3 ab82ffd c0722d3 f18c71f c0722d3 f18c71f c0722d3 ab82ffd 5d4252b ab82ffd | 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 | package controllers
import (
http_error "abdanhafidz.com/go-boilerplate/models/error"
"abdanhafidz.com/go-boilerplate/utils"
"github.com/gin-gonic/gin"
uuid "github.com/google/uuid"
)
func ParseAccountId(ctx *gin.Context) uuid.UUID {
gaccountId, _ := ctx.Get("account_id")
accountId, err := utils.ToUUID(gaccountId)
if err != nil {
ResponseJSON(ctx, gin.H{"account_id": accountId}, uuid.UUID{}, http_error.INVALID_TOKEN)
return uuid.UUID{}
}
return accountId
}
func ParseUUID(ctx *gin.Context, attrName string) uuid.UUID {
uuidRaw := ctx.Param(attrName)
if uuidRaw == "" {
if fromCtx, ok := ctx.Get(attrName); ok {
uuidParsed, err := utils.ToUUID(fromCtx)
if err == nil {
return uuidParsed
}
}
ResponseJSON(ctx, gin.H{"id": uuidRaw}, uuid.UUID{}, http_error.BAD_REQUEST_ERROR)
ctx.Abort()
return uuid.UUID{}
}
uuidParsed, err := utils.ToUUID(uuidRaw)
if err != nil {
ResponseJSON(ctx, gin.H{"id": uuidRaw}, uuid.UUID{}, http_error.BAD_REQUEST_ERROR)
ctx.Abort()
return uuid.UUID{}
}
return uuidParsed
}
func RequestJSON[TRequest any](ctx *gin.Context) TRequest {
var request TRequest
if err := ctx.ShouldBindJSON(&request); err != nil {
utils.ResponseFAILED(ctx, request, http_error.BAD_REQUEST_ERROR)
ctx.Abort()
return request
} else {
return request
}
}
func RequestForm[TRequest any](ctx *gin.Context) TRequest {
var request TRequest
if err := ctx.ShouldBind(&request); err != nil {
utils.ResponseFAILED(ctx, request, http_error.BAD_REQUEST_ERROR)
ctx.Abort()
return request
}
return request
}
func ResponseJSON[TResponse any, TMetaData any](ctx *gin.Context, metaData TMetaData, res TResponse, err error) {
utils.SendResponse(ctx, metaData, res, err)
}
|