DanzApp-BE-Test / controllers /controller.go
lifedebugger's picture
Deploy files from GitHub repository
4a66f20
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 ParseUserId(ctx *gin.Context) string {
guserId, _ := ctx.Get("user_id")
userId, ok := guserId.(string)
if !ok {
ResponseJSON(ctx, gin.H{"user_id": userId}, "", http_error.INVALID_TOKEN)
return ""
}
return userId
}
func ParseUUID(ctx *gin.Context, attrName string) uuid.UUID {
uuidRaw, _ := ctx.Get(attrName)
uuidParsed, err := utils.ToUUID(uuidRaw)
if err != nil {
ResponseJSON(ctx, gin.H{"id": uuidParsed}, uuid.UUID{}, http_error.INVALID_TOKEN)
return uuid.UUID{}
}
return uuidParsed
}
func RequestJSON[TRequest any](ctx *gin.Context) (TRequest, error) {
var request TRequest
if err := ctx.ShouldBindJSON(&request); err != nil {
utils.ResponseFAILED(ctx, request, http_error.BAD_REQUEST_ERROR)
ctx.Abort()
return request, http_error.BAD_REQUEST_ERROR
}
return request, nil
}
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)
}