-
Notifications
You must be signed in to change notification settings - Fork 0
/
sql_struct.go
78 lines (67 loc) · 2.11 KB
/
sql_struct.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
package gojson2sql
import "github.com/goccy/go-json"
type Condition struct {
Operand *string `json:"operand"`
Clause json.RawMessage `json:"clause"`
Operator SQLOperatorEnum `json:"operator"`
Value json.RawMessage `json:"value"`
IsStatic *bool `json:"isStatic"`
Datatype *SQLDataTypeEnum `json:"datatype"`
Composite *[]Condition `json:"composite"`
Expectation *ExpectationField `json:"expectation"`
}
type SQLJson struct {
Table string `json:"table"`
SelectFields *[]json.RawMessage `json:"selectFields"`
Join *[]Join `json:"join"`
Where *Condition `json:"where"`
Conditions *[]Condition `json:"conditions"`
GroupBy *struct {
Fields []string `json:"fields"`
} `json:"groupBy"`
Having *[]Condition `json:"having"`
OrderBy *struct {
Fields []string `json:"fields"`
Sort *string `json:"sort"`
} `json:"orderBy"`
Limit *json.RawMessage `json:"limit"`
Offset *json.RawMessage `json:"offset"`
}
type Join struct {
Table *string `json:"table"`
Type *string `json:"type"`
On map[string]string `json:"on"`
}
type ValueRange struct {
From json.RawMessage `json:"from"`
To json.RawMessage `json:"to"`
}
type SqlFunc struct {
SqlFunc struct {
Name string `json:"name"`
IsField *bool `json:"isField"`
Params json.RawMessage `json:"params"`
} `json:"sqlFunc"`
}
type SelectionFields struct {
Field string `json:"field"`
Alias *string `json:"alias"`
SubQuery *SQLJson `json:"subquery"`
AddFunction *SqlFunc `json:"addFunction"`
}
type Case struct {
When *[]Condition `json:"when"`
DefaultValue json.RawMessage `json:"defaultValue"`
Alias *string `json:"alias"`
}
type ValueAdjacent struct {
Value json.RawMessage `json:"value"`
Datatype *SQLDataTypeEnum `json:"datatype"`
IsStatic *bool `json:"isStatic"`
}
type LimitOffsetValue struct {
IsStatic bool `json:"isStatic"`
Value int `json:"value"`
}
type ExpectationField ValueAdjacent
type CaseDefauleValue ValueAdjacent