37 lines
2.0 KiB
Go
37 lines
2.0 KiB
Go
// Package validate ...
|
|
//
|
|
// Description : validate ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 2025-03-18 14:33
|
|
package validate
|
|
|
|
import (
|
|
"git.zhangdeman.cn/zhangdeman/consts"
|
|
)
|
|
|
|
const (
|
|
TagErrMsg = "err" // json结构体中, 错误信息 tag 字段
|
|
TagValidate = "validator" // json结构体中, 验证规则 rule 字段
|
|
TagDefaultValue = "default" // json结构体中默认值标签
|
|
)
|
|
|
|
// Rule 规则定义
|
|
type Rule struct {
|
|
Tag string `json:"tag" dc:"规则标签,如:required, email, phone, etc."` // 规则标签,如:required, email, phone, etc.
|
|
Args []string `json:"args" dc:"规则参数"` // 规则参数,如: Tag=min, Args=[1], 则会转化成验证规则 min=1
|
|
}
|
|
|
|
// StructField 结构体字段定义
|
|
type StructField struct {
|
|
JsonTag string `json:"json_tag" dc:"字段对外输出的json标签"` // 结构体字段名称, 不单独设置, 从 TargetPath 解析
|
|
Type consts.DataType `json:"type" dc:"字段的数据类型"` // 字段的数据类型
|
|
Required bool `json:"required" dc:"是否必传"` // 对应验证规则的 required 属性, 在非必传的情况下, 字段不存在, 不会进行规则验证, 字段存在, 才会进行验证, Required == false 时, 会在 RuleList 检测是否有required 规则
|
|
RuleList []Rule `json:"rule_list" dc:"字段规则列表"` // 字段规则列表
|
|
DefaultValue string `json:"default_value" dc:"字段默认值"` // 字段默认值, 仅对非必传字段生效, 统一用字符串类型, 后面会转换成 FieldType 类型
|
|
SourcePath string `json:"source_path" dc:"读取数据的数据源路径"` // 读取数据的数据源路径
|
|
TargetPath string `json:"target_path" dc:"数据设置哪一个路径"` // 目标数据路径
|
|
Errmsg string `json:"errmsg" dc:"规则验证不通过时, 报错的信息"` // 规则验证不通过时, 报错的信息
|
|
}
|