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 11:36:45 +08:00
|
|
|
if len(validateRule.ParamList) == 0 {
|
2025-01-24 11:15:59 +08:00
|
|
|
return ruleConfig.ValidatorRule.String(), nil
|
|
|
|
}
|
|
|
|
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
|
|
|
|
}
|