type RequestClientRegister struct {
UserId uuid.UUID `json:"user_id" required:"true" description:"keycloak user id"`
Name string `json:"name,omitempty" required:"true" description:"name"`
MiddleName string `json:"middle_name,omitempty" required:"true" description:"middle name"`
}
func (request *RequestClientRegister) CheckFields() error {
types := reflect.TypeOf(request).Elem()
fields := reflect.ValueOf(request).Elem()
err := checkRequiredFields(types, fields)
return err
}
func checkRequiredFields(types reflect.Type, fields reflect.Value) error {
for i := 0; i < types.NumField(); i++ {
valueField := types.Field(i)
isEmpty := fields.Field(i).IsZero()
column := valueField.Tag.Get("required")
isRequired, err := strconv.ParseBool(column)
if err != nil {
return err
}
if (isRequired) && (isEmpty == true) {
err = errors.New("Required field on given struct is empty")
return err
}
}
return nil
}
func TestStructChecker(t *testing.T) {
register2 := api.RequestClientRegister{uuid.Nil, "", ""}
err := register2.CheckFields()
if err != nil {
log.Println(err)
}
//
var register = api.RequestClientRegister{uuid.New(), "batata", "jones"}
err = register.CheckFields()
if err != nil {
log.Println(err)
t.FailNow()
}
}
🌱 Back to Garden