增加规则默认实例

This commit is contained in:
白茶清欢 2024-04-29 14:08:50 +08:00
parent f175cc4f75
commit 7454036bf5
4 changed files with 118 additions and 4 deletions

View File

@ -17,6 +17,9 @@ type FieldRule struct {
Type string `json:"type"` // 数据类型, 具体枚举值参见 git.zhangdeman.cn/zhangdeman/consts Type string `json:"type"` // 数据类型, 具体枚举值参见 git.zhangdeman.cn/zhangdeman/consts
DefaultValue string `json:"default_value"` // 默认值, 统一以字符串传入, 会转为最终设置的类型 DefaultValue string `json:"default_value"` // 默认值, 统一以字符串传入, 会转为最终设置的类型
IsRequired bool `json:"is_required"` // 是否必传 IsRequired bool `json:"is_required"` // 是否必传
AllowEmpty bool `json:"allow_empty"` // 必传时空字符串是否合法
AllowZero bool `json:"allow_zero"` // 必传数字, 0 是否合法
AllowNil bool `json:"allow_nil"` // 必传时, nil值是否合法
RequiredConditionGroup [][]RequiredCondition `json:"required_condition_group"` // 满足何种条件,字段必传,不配置则为无差别必传, 组之间是或条件, 满足一组即命中, 组之内为与条件 RequiredConditionGroup [][]RequiredCondition `json:"required_condition_group"` // 满足何种条件,字段必传,不配置则为无差别必传, 组之间是或条件, 满足一组即命中, 组之内为与条件
ValueLimit *ValueLimit `json:"value_limit"` // 数据值的限制 ValueLimit *ValueLimit `json:"value_limit"` // 数据值的限制
} }
@ -63,8 +66,8 @@ type StringValueLimit struct {
// //
// Date : 11:22 2024/4/29 // Date : 11:22 2024/4/29
type IntValueLimit struct { type IntValueLimit struct {
Min int64 `json:"min"` // 最小值(包含) Min *int64 `json:"min"` // 最小值(包含)
Max int64 `json:"max"` // 最大值(不包含) Max *int64 `json:"max"` // 最大值(不包含)
EnumList []int64 `json:"enum_list"` // 枚举值列表 EnumList []int64 `json:"enum_list"` // 枚举值列表
} }
@ -74,8 +77,8 @@ type IntValueLimit struct {
// //
// Date : 11:22 2024/4/29 // Date : 11:22 2024/4/29
type FloatValueLimit struct { type FloatValueLimit struct {
Min float64 `json:"min"` // 最小值(包含) Min *float64 `json:"min"` // 最小值(包含)
Max float64 `json:"max"` // 最大值(不包含) Max *float64 `json:"max"` // 最大值(不包含)
EnumList []float64 `json:"enum_list"` // 枚举值列表 EnumList []float64 `json:"enum_list"` // 枚举值列表
} }

2
go.mod
View File

@ -1,3 +1,5 @@
module git.zhangdeman.cn/gateway/validator module git.zhangdeman.cn/gateway/validator
go 1.22.2 go 1.22.2
require git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240429055735-7d7191726f0c // indirect

2
go.sum Normal file
View File

@ -0,0 +1,2 @@
git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240429055735-7d7191726f0c h1:n+n49onVpIgemvRdX4XnUB5psWh/NZ/qYkapCbJ4AYA=
git.zhangdeman.cn/zhangdeman/consts v0.0.0-20240429055735-7d7191726f0c/go.mod h1:IXXaZkb7vGzGnGM5RRWrASAuwrVSNxuoe0DmeXx5g6k=

107
rule_instance.go Normal file
View File

@ -0,0 +1,107 @@
// Package validator ...
//
// Description : validator ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2024-04-29 12:18
package validator
import "git.zhangdeman.cn/gateway/validator/define"
// NewDefaultFieldRule ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 14:01 2024/4/29
func NewDefaultFieldRule(path string, dataType string, isRequired bool, defaultValue string) *define.FieldRule {
r := &define.FieldRule{
Path: path,
Type: dataType,
DefaultValue: defaultValue,
IsRequired: isRequired,
AllowNil: false,
AllowEmpty: false,
AllowZero: true,
RequiredConditionGroup: make([][]define.RequiredCondition, 0),
ValueLimit: &define.ValueLimit{
String: nil,
Int: nil,
Float: nil,
Slice: nil,
Map: nil,
},
}
return r
}
// NewDefaultStringValueLimit ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:22 2024/4/29
func NewDefaultStringValueLimit(minLength int64, maxLength int64) *define.StringValueLimit {
l := &define.StringValueLimit{
MinLength: minLength,
MaxLength: maxLength,
AutoTrimSpace: true,
IncludeSubStrList: make([]string, 0),
EnumList: make([]string, 0),
}
return l
}
// NewDefaultIntValueLimit ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:24 2024/4/29
func NewDefaultIntValueLimit(min *int64, max *int64) *define.IntValueLimit {
l := &define.IntValueLimit{
Min: min,
Max: max,
EnumList: make([]int64, 0),
}
return l
}
// NewDefaultFloatValueLimit ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:27 2024/4/29
func NewDefaultFloatValueLimit(min *float64, max *float64) *define.FloatValueLimit {
l := &define.FloatValueLimit{
Min: min,
Max: max,
EnumList: make([]float64, 0),
}
return l
}
// NewDefaultSliceValueLimit ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:30 2024/4/29
func NewDefaultSliceValueLimit(minLength int64, maxLength int64) *define.SliceValueLimit {
l := &define.SliceValueLimit{
MinLength: minLength,
MaxLength: maxLength,
}
return l
}
// NewDefaultMapValueLimit ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 12:30 2024/4/29
func NewDefaultMapValueLimit(minLength int64, maxLength int64) *define.MapValueLimit {
l := &define.MapValueLimit{
MinLength: minLength,
MaxLength: maxLength,
IncludeFieldList: make([]string, 0),
}
return l
}