优化验证规则表达式生成

This commit is contained in:
白茶清欢 2025-01-24 11:36:45 +08:00
parent 064f5e2c5b
commit fcad833e88
3 changed files with 48 additions and 7 deletions

View File

@ -7,7 +7,10 @@
// Date : 2025-01-23 18:44 // Date : 2025-01-23 18:44
package abstract package abstract
import "git.zhangdeman.cn/zhangdeman/consts" import (
"git.zhangdeman.cn/gateway/validator/v10/define"
"git.zhangdeman.cn/zhangdeman/consts"
)
// IValidateRuleGenerateFunc 生成校验规则的方法约束 // IValidateRuleGenerateFunc 生成校验规则的方法约束
// //
@ -23,4 +26,11 @@ import "git.zhangdeman.cn/zhangdeman/consts"
// 返回值说明 // 返回值说明
// - express: 生成的表达式 // - express: 生成的表达式
// - err: 表达式生成过程中出现的异常 // - err: 表达式生成过程中出现的异常
type IValidateRuleGenerateFunc func(validateRule consts.ValidatorRule, paramList ...any) (express string, err error) type IValidateRuleGenerateFunc func(ruleConfig define.GenerateRuleExpressConfig) (express string, err error)
// IFieldValidateRuleGenerateFunc 字段验证规则生成方法
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:16 2025/1/24
type IFieldValidateRuleGenerateFunc func(validateRule consts.ValidatorRule, paramList ...any) (express string, err error)

View File

@ -10,7 +10,7 @@ package v10
import ( import (
"errors" "errors"
"fmt" "fmt"
"git.zhangdeman.cn/zhangdeman/consts" "git.zhangdeman.cn/gateway/validator/v10/define"
"strings" "strings"
) )
@ -19,16 +19,16 @@ import (
// Author : go_developer@163.com<白茶清欢> // Author : go_developer@163.com<白茶清欢>
// //
// Date : 10:33 2025/1/24 // Date : 10:33 2025/1/24
func DefaultValidateRuleGenerateFunc(validateRule consts.ValidatorRule, paramList ...any) (express string, err error) { func DefaultValidateRuleGenerateFunc(validateRule define.GenerateRuleExpressConfig) (express string, err error) {
ruleConfig := validateRule.Config() ruleConfig := validateRule.Rule.Config()
if len(ruleConfig.ValidatorRule.String()) == 0 { if len(ruleConfig.ValidatorRule.String()) == 0 {
return "", errors.New("validate rule is empty") return "", errors.New("validate rule is empty")
} }
if len(paramList) == 0 { if len(validateRule.ParamList) == 0 {
return ruleConfig.ValidatorRule.String(), nil return ruleConfig.ValidatorRule.String(), nil
} }
paramStrList := make([]string, 0) paramStrList := make([]string, 0)
for _, param := range paramList { for _, param := range validateRule.ParamList {
paramStrList = append(paramStrList, fmt.Sprintf("%v", param)) paramStrList = append(paramStrList, fmt.Sprintf("%v", param))
} }
return ruleConfig.ValidatorRule.String() + "=" + strings.Join(paramStrList, " "), nil return ruleConfig.ValidatorRule.String() + "=" + strings.Join(paramStrList, " "), nil

View File

@ -0,0 +1,31 @@
// Package define ...
//
// Description : define ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2025-01-24 11:21
package define
import "git.zhangdeman.cn/zhangdeman/consts"
// FieldValidateGenerateConfig 字段验证规则生成的配置
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:23 2025/1/24
type FieldValidateGenerateConfig struct {
Field string `json:"field,omitempty"` // 字段
RuleGroup [][]GenerateRuleExpressConfig `json:"rule_group,omitempty"` // 规则的分组, 同组内为 && 条件, 组之间为 || 条件, 适用于复杂条件配置
RuleSimple GenerateRuleExpressConfig `json:"rule_simple,omitempty"` // 简单条件配置, 与 RuleGroup 至少配置一个
}
// GenerateRuleExpressConfig 生成规则验证表达式的配置
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:27 2025/1/24
type GenerateRuleExpressConfig struct {
Rule consts.ValidatorRule `json:"rule,omitempty"` // 条件配置
ParamList []any `json:"param_list,omitempty"` // 规则验证的参数列表
}