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)
|
||
}
|