2025-01-24 11:15:59 +08:00
// Package v10 ...
//
// Description : v10 ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2025-01-24 10:32
package v10
import (
"errors"
"fmt"
2025-01-24 11:36:45 +08:00
"git.zhangdeman.cn/gateway/validator/v10/define"
2025-01-24 11:15:59 +08:00
"strings"
)
// DefaultValidateRuleGenerateFunc 验证规则生成的默认方法
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 10:33 2025/1/24
2025-01-24 11:36:45 +08:00
func DefaultValidateRuleGenerateFunc ( validateRule define . GenerateRuleExpressConfig ) ( express string , err error ) {
ruleConfig := validateRule . Rule . Config ( )
2025-01-24 11:15:59 +08:00
if len ( ruleConfig . ValidatorRule . String ( ) ) == 0 {
return "" , errors . New ( "validate rule is empty" )
}
2025-01-24 15:28:28 +08:00
if ruleConfig . WithoutParam {
// 验证规则不需要任何参数, 舍弃参数
2025-01-24 11:15:59 +08:00
return ruleConfig . ValidatorRule . String ( ) , nil
}
2025-01-24 15:28:28 +08:00
// 验证参数数量
if ruleConfig . MinParamCnt > 0 && len ( validateRule . ParamList ) < ruleConfig . MinParamCnt {
return "" , errors . New ( ruleConfig . ValidatorRule . String ( ) + " : validate rule param count is less than min param cnt -> " + fmt . Sprintf ( "%v" , ruleConfig . MinParamCnt ) )
}
if ruleConfig . MaxParamCnt > 0 && len ( validateRule . ParamList ) > ruleConfig . MinParamCnt {
return "" , errors . New ( ruleConfig . ValidatorRule . String ( ) + " : validate rule param count is more than max param cnt -> " + fmt . Sprintf ( "%v" , ruleConfig . MaxParamCnt ) )
}
if ruleConfig . ParamCntMustEven && len ( validateRule . ParamList ) % 2 != 0 {
return "" , errors . New ( ruleConfig . ValidatorRule . String ( ) + " : validate rule param count should be even" )
}
2025-01-24 11:15:59 +08:00
paramStrList := make ( [ ] string , 0 )
2025-01-24 11:36:45 +08:00
for _ , param := range validateRule . ParamList {
2025-01-24 11:15:59 +08:00
paramStrList = append ( paramStrList , fmt . Sprintf ( "%v" , param ) )
}
return ruleConfig . ValidatorRule . String ( ) + "=" + strings . Join ( paramStrList , " " ) , nil
}
2025-01-24 11:57:45 +08:00
// 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 "" , errors . New ( "rule group and rule simple all empty" )
}
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
}