package router import ( "strings" "github.com/go-playground/validator/v10" "github.com/iliadenisov/galaxy/internal/util" ) var notBlankStringValidator validator.Func = func(fl validator.FieldLevel) bool { s, ok := fl.Field().Interface().(string) if ok { if len(strings.TrimSpace(s)) == 0 { return false } } return true } var entityNameStringValidator validator.Func = func(fl validator.FieldLevel) bool { s, ok := fl.Field().Interface().(string) if ok { if _, ok := util.ValidateTypeName(s); !ok { return false } } return true } var productionTypeStringValidator validator.Func = func(fl validator.FieldLevel) bool { v, ok := fl.Field().Interface().(string) if ok { f := fl.Parent().FieldByName(fl.Param()) if s, ok := f.Interface().(string); ok && (s == "SHIP" || s == "SCIENCE") && len(strings.TrimSpace(v)) == 0 { return false } } return true } var armamentWithWeaponsValidator validator.Func = func(fl validator.FieldLevel) bool { var v, compareTo float64 f := fl.Parent().FieldByName(fl.Param()) if f.CanFloat() { compareTo = f.Float() } else if f.CanInt() { compareTo = float64(f.Int()) } else { return false } if fl.Field().CanFloat() { v = fl.Field().Float() } else if fl.Field().CanInt() { v = float64(fl.Field().Int()) } else { return false } return (v == 0 && compareTo == 0) || (v >= 1 && compareTo >= 1) }