49 lines
2.0 KiB
Go
49 lines
2.0 KiB
Go
|
package types
|
|||
|
|
|||
|
import (
|
|||
|
"database/sql/driver"
|
|||
|
"encoding/json"
|
|||
|
)
|
|||
|
|
|||
|
type (
|
|||
|
Attribute struct {
|
|||
|
Match string `json:"match"` //匹配模式
|
|||
|
Tag string `json:"tag,omitempty"` //字段标签
|
|||
|
PrimaryKey bool `json:"primary_key"` //是否为主键
|
|||
|
DefaultValue string `json:"default_value"` //默认值
|
|||
|
Readonly []string `json:"readonly"` //只读场景
|
|||
|
Disable []string `json:"disable"` //禁用场景
|
|||
|
Visible []VisibleCondition `json:"visible"` //可见条
|
|||
|
Invisible bool `json:"invisible"` //不可见的字段,表示在UI界面看不到这个字段,但是这个字段需要
|
|||
|
EndOfNow bool `json:"end_of_now"` //最大时间为当前时间
|
|||
|
Values []EnumValue `json:"values"` //值
|
|||
|
Live LiveValue `json:"live"` //延时加载配置
|
|||
|
UploadUrl string `json:"upload_url,omitempty"` //上传地址
|
|||
|
Icon string `json:"icon,omitempty"` //显示图标
|
|||
|
Sort bool `json:"sort"` //是否允许排序
|
|||
|
Suffix string `json:"suffix,omitempty"` //追加内容
|
|||
|
Tooltip string `json:"tooltip,omitempty"` //字段提示信息
|
|||
|
Description string `json:"description,omitempty"` //字段说明信息
|
|||
|
DropdownOption *DropdownOption `json:"dropdown,omitempty"` //下拉选项
|
|||
|
}
|
|||
|
)
|
|||
|
|
|||
|
// Scan implements the Scanner interface.
|
|||
|
func (n *Attribute) Scan(value interface{}) error {
|
|||
|
if value == nil {
|
|||
|
return nil
|
|||
|
}
|
|||
|
switch s := value.(type) {
|
|||
|
case string:
|
|||
|
return json.Unmarshal([]byte(s), n)
|
|||
|
case []byte:
|
|||
|
return json.Unmarshal(s, n)
|
|||
|
}
|
|||
|
return ErrDbTypeUnsupported
|
|||
|
}
|
|||
|
|
|||
|
// Value implements the driver Valuer interface.
|
|||
|
func (n Attribute) Value() (driver.Value, error) {
|
|||
|
return json.Marshal(n)
|
|||
|
}
|