// Package v10 ... // // Description : v10 ... // // Author : go_developer@163.com<白茶清欢> // // Date : 2025-01-24 10:32 package v10 import ( "errors" "fmt" "git.zhangdeman.cn/gateway/validator/v10/define" "strings" ) // DefaultValidateRuleGenerateFunc 验证规则生成的默认方法 // // Author : go_developer@163.com<白茶清欢> // // Date : 10:33 2025/1/24 func DefaultValidateRuleGenerateFunc(validateRule define.GenerateRuleExpressConfig) (express string, err error) { ruleConfig := validateRule.Rule.Config() if len(ruleConfig.ValidatorRule.String()) == 0 { return "", define.ErrValidatorRuleIsEmpty } if ruleConfig.WithoutParam { // 验证规则不需要任何参数, 舍弃参数 return ruleConfig.ValidatorRule.String(), nil } // 验证参数数量 if ruleConfig.MinParamCnt > 0 && len(validateRule.ParamList) < ruleConfig.MinParamCnt { return "", errors.New(ruleConfig.ValidatorRule.String() + " : " + define.ErrValidatorRuleParamCntIsTooLess.Error() + "-> " + fmt.Sprintf("%v", ruleConfig.MinParamCnt)) } if ruleConfig.MaxParamCnt > 0 && len(validateRule.ParamList) > ruleConfig.MaxParamCnt { return "", errors.New(ruleConfig.ValidatorRule.String() + " :" + define.ErrValidatorRuleParamCntIsTooMore.Error() + " -> " + fmt.Sprintf("%v", ruleConfig.MaxParamCnt)) } if ruleConfig.ParamCntMustEven && len(validateRule.ParamList)%2 != 0 { return "", errors.New(ruleConfig.ValidatorRule.String() + " : " + define.ErrValidatorRuleParamCntIsNotEven.Error()) } paramStrList := make([]string, 0) for _, param := range validateRule.ParamList { paramStrList = append(paramStrList, fmt.Sprintf("%v", param)) } return ruleConfig.ValidatorRule.String() + "=" + strings.Join(paramStrList, " "), nil } // DefaultFieldValidateRuleGenerateFunc 字段验证表达式生成 // // Author : go_developer@163.com<白茶清欢> // // Date : 11:44 2025/1/24 func DefaultFieldValidateRuleGenerateFunc(fieldValidateRule define.FieldValidateGenerateConfig) (string, error) { if len(fieldValidateRule.RuleGroup) == 0 && len(fieldValidateRule.RuleSimple.Rule.String()) == 0 { return "", define.ErrValidatorRuleGroupOrSimpleRuleAllEmpty } if len(fieldValidateRule.RuleGroup) == 0 { // note: 当 fieldValidateRule.RuleGroup 不为空时, 会忽略 fieldValidateRule.RuleSimple 配置 fieldValidateRule.RuleGroup = [][]define.GenerateRuleExpressConfig{ []define.GenerateRuleExpressConfig{ fieldValidateRule.RuleSimple, }, } } finalExpressList := make([]string, 0) for _, itemGroupList := range fieldValidateRule.RuleGroup { expressList := make([]string, 0) for _, itemRule := range itemGroupList { if fieldExpress, err := validatorRuleExpressGenerateFunc(itemRule); nil != err { return "", err } else { expressList = append(expressList, fieldExpress) } } finalExpressList = append(finalExpressList, strings.Join(expressList, ",")) } return strings.Join(finalExpressList, "|"), nil }