增加验证规则的枚举值 #2
18
data_type.go
18
data_type.go
@ -194,3 +194,21 @@ func getDataTypeDesc(value DataType, description string) DataTypeDesc {
|
|||||||
Description: description,
|
Description: description,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
// DataTypeBaseNumber 基础的int类型
|
||||||
|
DataTypeBaseNumber = []DataType{DataTypeInt, DataTypeUint, DataTypeFloat, DataTypeIntPtr, DataTypeUintPtr, DataTypeFloatPtr}
|
||||||
|
DataTypeBaseInt = []DataType{DataTypeInt, DataTypeIntPtr}
|
||||||
|
DataTypeBaseUint = []DataType{DataTypeUint, DataTypeUintPtr}
|
||||||
|
DataTypeBaseFloat = []DataType{DataTypeFloat, DataTypeFloatPtr}
|
||||||
|
DataTypeBaseString = []DataType{DataTypeString, DataTypeStringPtr}
|
||||||
|
DataTypeBaseBool = []DataType{DataTypeBool, DataTypeBoolPtr}
|
||||||
|
)
|
||||||
|
|
||||||
|
func getMergeDataTypeList(dataTypeList ...[]DataType) []DataType {
|
||||||
|
res := []DataType{}
|
||||||
|
for _, dataTypeItemList := range dataTypeList {
|
||||||
|
res = append(res, dataTypeItemList...)
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
208
validator.go
Normal file
208
validator.go
Normal file
@ -0,0 +1,208 @@
|
|||||||
|
// Package consts ...
|
||||||
|
//
|
||||||
|
// Description : consts ...
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 2025-01-22 16:08
|
||||||
|
// @see: https://github.com/go-playground/validator/blob/master/README.md#strings
|
||||||
|
// @demo: https://www.cnblogs.com/zj420255586/p/13542395.html
|
||||||
|
package consts
|
||||||
|
|
||||||
|
type ValidatorRule string // 验证规则
|
||||||
|
|
||||||
|
func (vr *ValidatorRule) String() string {
|
||||||
|
return string(*vr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (vr *ValidatorRule) MarshalJSON() ([]byte, error) {
|
||||||
|
return []byte(vr.String()), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Config 验证规则的配置
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 16:10 2025/1/22
|
||||||
|
func (vr *ValidatorRule) Config() ValidatorRuleConfig {
|
||||||
|
return ValidatorRuleSupportDataTypeTable[*vr]
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsSupportDataType 是否支持指定的数据类型
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 16:11 2025/1/22
|
||||||
|
func (vr *ValidatorRule) IsSupportDataType(dataType DataType) bool {
|
||||||
|
dataTypeList := vr.Config().SupportDataTypeList
|
||||||
|
if len(dataTypeList) == 0 {
|
||||||
|
// 未配置则认为支持
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
for _, dataTypeItem := range dataTypeList {
|
||||||
|
if dataType.String() == dataTypeItem.String() {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
type ValidatorRuleConfig struct {
|
||||||
|
ValidatorRule ValidatorRule `json:"validator_rule"` // 验证规则
|
||||||
|
Description string `json:"description"` // 规则描述
|
||||||
|
SupportDataTypeList []DataType `json:"support_data_type_list"` // 支持的数据类型列表
|
||||||
|
}
|
||||||
|
|
||||||
|
// ValidatorRuleSupportDataTypeTable 验证规则支持的数据类型表
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 16:13 2025/1/22
|
||||||
|
var ValidatorRuleSupportDataTypeTable = map[ValidatorRule]ValidatorRuleConfig{
|
||||||
|
ValidatorRuleEqcsfield: {
|
||||||
|
ValidatorRule: ValidatorRuleEqcsfield,
|
||||||
|
Description: "跨结构体字段相等",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool),
|
||||||
|
},
|
||||||
|
ValidatorRuleEqfield: {
|
||||||
|
ValidatorRule: ValidatorRuleEqfield,
|
||||||
|
Description: "同结构体字段相等",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool),
|
||||||
|
},
|
||||||
|
ValidatorRuleFieldcontains: {
|
||||||
|
ValidatorRule: ValidatorRuleFieldcontains,
|
||||||
|
Description: "检查指定的字段值是否存在于字段中",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString),
|
||||||
|
},
|
||||||
|
ValidatorRuleFieldexcludes: {
|
||||||
|
ValidatorRule: ValidatorRuleFieldexcludes,
|
||||||
|
Description: "检查指定的字段值是否不存在于字段中",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseString),
|
||||||
|
},
|
||||||
|
ValidatorRuleGtcsfield: {
|
||||||
|
ValidatorRule: ValidatorRuleGtcsfield,
|
||||||
|
Description: "大于(跨结构体)",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber),
|
||||||
|
},
|
||||||
|
ValidatorRuleGtecsfield: {
|
||||||
|
ValidatorRule: ValidatorRuleGtecsfield,
|
||||||
|
Description: "大于(同结构体)",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber),
|
||||||
|
},
|
||||||
|
ValidatorRuleGtfield: {
|
||||||
|
ValidatorRule: ValidatorRuleGtfield,
|
||||||
|
Description: "大于(同结构体)",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber),
|
||||||
|
},
|
||||||
|
ValidatorRuleGtefield: {
|
||||||
|
ValidatorRule: ValidatorRuleGtefield,
|
||||||
|
Description: "大于(同结构体)",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber),
|
||||||
|
},
|
||||||
|
ValidatorRuleLtcsfield: {
|
||||||
|
ValidatorRule: ValidatorRuleLtcsfield,
|
||||||
|
Description: "小于(跨结构体)",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber),
|
||||||
|
},
|
||||||
|
ValidatorRuleLtecsfield: {
|
||||||
|
ValidatorRule: ValidatorRuleLtecsfield,
|
||||||
|
Description: "小于等于(跨结构体)",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber),
|
||||||
|
},
|
||||||
|
ValidatorRuleLtfield: {
|
||||||
|
ValidatorRule: ValidatorRuleLtfield,
|
||||||
|
Description: "小于(同结构体)",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber),
|
||||||
|
},
|
||||||
|
ValidatorRuleLtefield: {
|
||||||
|
ValidatorRule: ValidatorRuleLtefield,
|
||||||
|
Description: "小于等于(同结构体)",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber),
|
||||||
|
},
|
||||||
|
ValidatorRuleNecsfield: {
|
||||||
|
ValidatorRule: ValidatorRuleNecsfield,
|
||||||
|
Description: "不等于(跨结构体)",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool),
|
||||||
|
},
|
||||||
|
ValidatorRuleNefield: {
|
||||||
|
ValidatorRule: ValidatorRuleNefield,
|
||||||
|
Description: "不等于(同结构体)",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool),
|
||||||
|
},
|
||||||
|
ValidateRuleEq: {
|
||||||
|
ValidatorRule: ValidateRuleEq,
|
||||||
|
Description: "等于(严格校验)",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool),
|
||||||
|
},
|
||||||
|
ValidateRuleEqIgnoreCase: {
|
||||||
|
ValidatorRule: ValidateRuleEqIgnoreCase,
|
||||||
|
Description: "等于(忽略大小写)",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool),
|
||||||
|
},
|
||||||
|
ValidateRuleGt: {
|
||||||
|
ValidatorRule: ValidateRuleGt,
|
||||||
|
Description: "大于",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber),
|
||||||
|
},
|
||||||
|
ValidateRuleGte: {
|
||||||
|
ValidatorRule: ValidateRuleGte,
|
||||||
|
Description: "大于等于",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber),
|
||||||
|
},
|
||||||
|
ValidateRuleLt: {
|
||||||
|
ValidatorRule: ValidateRuleLt,
|
||||||
|
Description: "小于",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber),
|
||||||
|
},
|
||||||
|
ValidateRuleLte: {
|
||||||
|
ValidatorRule: ValidateRuleLte,
|
||||||
|
Description: "小于等于",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber),
|
||||||
|
},
|
||||||
|
ValidateRuleNe: {
|
||||||
|
ValidatorRule: ValidateRuleNe,
|
||||||
|
Description: "不等于(严格判断)",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool),
|
||||||
|
},
|
||||||
|
ValidateRuleNeIgnoreCase: {
|
||||||
|
ValidatorRule: ValidateRuleNeIgnoreCase,
|
||||||
|
Description: "不等于(忽略大小写)",
|
||||||
|
SupportDataTypeList: getMergeDataTypeList(DataTypeBaseNumber, DataTypeBaseString, DataTypeBaseBool),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
// ValidatorRuleEqcsfield .....Fields ..............
|
||||||
|
ValidatorRuleEqcsfield ValidatorRule = "eqcsfield" // 跨结构体字段相等
|
||||||
|
ValidatorRuleEqfield ValidatorRule = "eqfield" // 同结构体字段相等
|
||||||
|
ValidatorRuleFieldcontains ValidatorRule = "fieldcontains" // 检查指定的字段值是否存在于字段中
|
||||||
|
ValidatorRuleFieldexcludes ValidatorRule = "fieldexcludes" // 检查指定的字段值是否存在于字段中
|
||||||
|
ValidatorRuleGtcsfield ValidatorRule = "gtcsfield" // 大于(跨结构体)
|
||||||
|
ValidatorRuleGtecsfield ValidatorRule = "gtecsfield" // 大于等于(跨结构体)
|
||||||
|
ValidatorRuleGtfield ValidatorRule = "gtfield" // 大于(同结构体)
|
||||||
|
ValidatorRuleGtefield ValidatorRule = "gtefield" // 大于等于(同结构体)
|
||||||
|
ValidatorRuleLtcsfield ValidatorRule = "ltcsfield" // 小于(跨结构体)
|
||||||
|
ValidatorRuleLtecsfield ValidatorRule = "ltecsfield" // 小于等于(跨结构体)
|
||||||
|
ValidatorRuleLtfield ValidatorRule = "ltfield" // 小于(同结构体)
|
||||||
|
ValidatorRuleLtefield ValidatorRule = "ltefield" // 小于等于(同结构体)
|
||||||
|
ValidatorRuleNecsfield ValidatorRule = "necsfield" // 不等于(跨结构体)
|
||||||
|
ValidatorRuleNefield ValidatorRule = "nefield" // 不等于(同结构体)
|
||||||
|
|
||||||
|
// ValidateRuleEq Comparisons ....................
|
||||||
|
ValidateRuleEq ValidatorRule = "eq" // 相等(严格判断)
|
||||||
|
ValidateRuleEqIgnoreCase ValidatorRule = "eq_ignore_case" // 相等(忽略大小写)
|
||||||
|
ValidateRuleGt ValidatorRule = "gt" // 大于
|
||||||
|
ValidateRuleGte ValidatorRule = "gte" // 大于等于
|
||||||
|
ValidateRuleLt ValidatorRule = "lt" // 小于
|
||||||
|
ValidateRuleLte ValidatorRule = "lte" // 小于等于
|
||||||
|
ValidateRuleNe ValidatorRule = "ne" // 不相等(严格判断)
|
||||||
|
ValidateRuleNeIgnoreCase ValidatorRule = "ne_ignore_case" // 不相等(忽略大小写)
|
||||||
|
|
||||||
|
// ValidatorCommonDir ............others
|
||||||
|
ValidatorCommonDir ValidatorRule = "dir" // 文件夹存在
|
||||||
|
ValidatorCommonDirPath ValidatorRule = "dirpath" // 文件夹路径
|
||||||
|
ValidatorCommonFile ValidatorRule = "file" // 文件存在
|
||||||
|
ValidatorCommonFilepath ValidatorRule = "filepath" // 文件路径
|
||||||
|
ValidatorCommonImage ValidatorRule = "image" // 图像
|
||||||
|
ValidatorCommonIsDefault ValidatorRule = "isdefault" // 是否默认值
|
||||||
|
)
|
Loading…
x
Reference in New Issue
Block a user