admin-dashboard-backend/modules/utils/validator.go

56 lines
1.4 KiB
Go

package utils
import (
"jannex/admin-dashboard-backend/modules/structs"
"regexp"
"strings"
"github.com/go-playground/validator/v10"
)
type ErrorResponse struct {
FailedField string
Tag string
Value string
}
var Validate = validator.New()
func ValidateStruct(event interface{}) []*ErrorResponse {
var errors []*ErrorResponse
err := Validate.Struct(event)
if err != nil {
for _, err := range err.(validator.ValidationErrors) {
var element ErrorResponse
element.FailedField = err.StructNamespace()
element.Tag = err.Tag()
element.Value = err.Param()
errors = append(errors, &element)
}
}
return errors
}
func validateNumericString(fl validator.FieldLevel) bool {
str := fl.Field().String()
return strings.TrimSpace(str) != "" && regexp.MustCompile(`^[0-9]+$`).MatchString(str)
}
func ValidatorInit() {
Validate.RegisterValidation("numericstring", validateNumericString)
Validate.RegisterStructValidationMapRules(generalRules,
structs.UserLoginRequest{},
structs.UserSignOutSessionRequest{},
structs.ScannerRequest{})
Validate.RegisterStructValidationMapRules(groupTaskRules,
structs.ApiGroupTaskRequest{})
Validate.RegisterStructValidationMapRules(equipmentRules,
structs.ApiEquipmentRequest{},
structs.ApiGetDocumentationEquipmentRequest{},
structs.ApiCreateEquipmentDocumentationRequest{},
structs.ApiEditEquipmentDocumentationRequest{})
}