package forms import ( "fmt" "reflect" "strconv" "strings" ) func nonzero(field string, value any, _ string) error { v := reflect.ValueOf(value) if v.Kind() == reflect.String && v.Len() == 0 { return fmt.Errorf("field '%s' must not be empty", field) } if v.Kind() == reflect.Slice && v.Len() == 0 { return fmt.Errorf("field '%s' must not be empty", field) } if v.Kind() >= reflect.Int && v.Kind() <= reflect.Float64 && v.IsZero() { return fmt.Errorf("field '%s' must be non-zero", field) } return nil } func minlen(field string, value any, param string) error { min, err := strconv.Atoi(param) if err != nil { return fmt.Errorf("invalid minlen param for field '%s'", field) } if str, ok := value.(string); ok && len(str) < min { return fmt.Errorf("field '%s' must be at least %d characters", field, min) } return nil } func email(field string, value any, _ string) error { str, ok := value.(string) if !ok || !strings.Contains(str, "@") { return fmt.Errorf("field '%s' must be a valid email address", field) } return nil }