query_set_components.go
3.2 KB
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
package domain
var (
SchemaTable TableType = "Schema"
SubProcessTable TableType = "SubProcess"
)
var (
FlagGroup = "Group"
FlagSet = "Set"
)
var (
TableSplit SelectExprType = "TableSplit" //拆分
SplitAssign SelectExprType = "SplitAssign" //拆分赋值
NormalAssign SelectExprType = "NormalAssign" //正常赋值
)
type SelectExprType string
type QueryComponent struct {
Id string `json:"id"`
MasterTable QueryComponentTable `json:"masterTable"`
Conditions []ConditionExpr `json:"conditions"`
JoinTables []QueryComponentTable `json:"-"` //joinTables
Selects []SelectExprGroup `json:"selects"`
SelectFromTables []QueryComponentTable `json:"-"` //selectTables
Description string `json:"description"`
}
type ConditionExpr struct { // 条件表达式
Id string `json:"id"`
FieldLeft FieldExpr `json:"fieldLeft"`
FieldRight FieldExpr `json:"fieldRight"`
OperatorSymbol string `json:"operatorSymbol"`
AndOr string `json:"andOr"` // and or
}
type SelectExpr struct { // 查询表达式
Id string `json:"id"`
FieldLeft FieldExpr `json:"fieldLeft"`
FieldRight FieldExpr `json:"fieldRight"` // has value when type is equal to 1
Type string `json:"type"` // 1.拆分 2.拆方赋值 3.正常赋值
//SubGroup []SelectExpr `json:"subGroup,omitempty"`
}
type SelectExprGroup struct { // 查询表达式
SelectExpr
SubSelects []SelectExpr `json:"subSelects,omitempty"`
}
type FieldExpr struct {
//LabelColumns []LabelColumn `json:"labelColumns"`
TableFields []TableField `json:"tableFields"`
//ExprHuman string `json:"exprHuman"`
ExprSql string `json:"exprSql"`
}
type LabelColumn struct {
Column TableField `json:"column,omitempty"`
LabelExpr string `json:"labelExpr"`
}
type TableField struct {
TableId int `json:"tableId"`
TableName string `json:"tableName"`
TableSqlName string `json:"tableSqlName"`
FieldName string `json:"fieldName"`
FieldSqlName string `json:"fieldSqlName"`
}
type QueryComponentTable struct {
// 表Id
TableId int `json:"tableId"`
// 表类型 MainTable:主表 SideTable:副表 SubTable:分表 ExcelTable:Excel表
TableType string `json:"tableType"`
// 名称
Name string `json:"name"`
// 对应数据库名称
SQLName string `json:"sqlName"`
// 父级ID
ParentId int `json:"parentId"`
// 所有列
Fields []*Field `json:"fields"`
}
type Join struct {
TableId int
TableName string
TableSqlName string
Conditions []ConditionExpr
On SelectExpr
}
func NewQueryComponentTable(t *Table) QueryComponentTable {
return QueryComponentTable{
TableId: t.TableId,
TableType: t.TableType,
Name: t.Name,
SQLName: t.SQLName,
ParentId: t.ParentId,
Fields: t.Fields(false),
}
}
func ConditionsToMapById(items []*ConditionExpr) map[string]*ConditionExpr {
var res = make(map[string]*ConditionExpr)
for i := range items {
res[items[i].Id] = items[i]
}
return res
}
func SelectsToMapById(items []*SelectExprGroup) map[string]*SelectExprGroup {
var res = make(map[string]*SelectExprGroup)
for i := range items {
res[items[i].Id] = items[i]
}
return res
}