forked from davyxu/tabtoy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
types_gen.go
157 lines (113 loc) · 2.55 KB
/
types_gen.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
// Generated by github.com/davyxu/tabtoy
// Version: 2.7.4
// DO NOT EDIT!!
package model
import (
"encoding/json"
"io/ioutil"
)
// Defined in table: Types
type ConditionType int32
const (
// 无
ConditionType_None ConditionType = 0
// 值存在
ConditionType_ValueExists ConditionType = 1
// 值相等
ConditionType_ValueEqual ConditionType = 2
// 值范围
ConditionType_ValueRange ConditionType = 3
)
// Defined in table: Builtin
type Builtin struct {
}
// Defined in table: Types
type TableTypes struct {
//对象类型
ObjectType string `MustFill:"true"`
//字段名
FieldName string `MustFill:"true"`
//字段类型
FieldType string `MustFill:"true"`
//枚举值
Value string
//别名
Alias string
//默认值
Default string
//特性
Meta string
//注释
Comment string
}
// Defined in table: Types
type TableVerify struct {
//规则名
RuleName string `MustFill:"true"`
//条件
Condition string `MustFill:"true"`
//字段路径(类型名.字段名)
FieldPath string `MustFill:"true"`
//值
Value string `MustFill:"true"`
}
// Defined in table: Types
type ValueRange struct {
// 最小
Min string
// 最大
Max string
}
// Builtin 访问接口
type BuiltinTable struct {
// 表格原始数据
Builtin
// 索引函数表
indexFuncByName map[string][]func(*BuiltinTable)
// 清空函数表
clearFuncByName map[string][]func(*BuiltinTable)
}
// 从json文件加载
func (self *BuiltinTable) Load(filename string) error {
data, err := ioutil.ReadFile(filename)
if err != nil {
return err
}
// 清除
for _, list := range self.clearFuncByName {
for _, v := range list {
v(self)
}
}
err = json.Unmarshal(data, &self.Builtin)
if err != nil {
return err
}
// 生成索引
for _, list := range self.indexFuncByName {
for _, v := range list {
v(self)
}
}
return nil
}
// 注册外部索引入口, 索引回调, 清空回调
func (self *BuiltinTable) RegisterIndexEntry(name string, indexCallback func(*BuiltinTable), clearCallback func(*BuiltinTable)) {
indexList, _ := self.indexFuncByName[name]
clearList, _ := self.clearFuncByName[name]
if indexCallback != nil {
indexList = append(indexList, indexCallback)
}
if clearCallback != nil {
clearList = append(clearList, clearCallback)
}
self.indexFuncByName[name] = indexList
self.clearFuncByName[name] = clearList
}
// 创建一个Builtin表读取实例
func NewBuiltinTable() *BuiltinTable {
return &BuiltinTable{
indexFuncByName: map[string][]func(*BuiltinTable){},
clearFuncByName: map[string][]func(*BuiltinTable){},
}
}