-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathselect.go
72 lines (61 loc) · 2 KB
/
select.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
package builder
import (
"strings"
)
// Select - func add Select to sql
func Select(columns ...interface{}) *Query {
return &Query{
Columns: interfaceToString(columns),
TypeQuery: "select",
}
}
// From - func add From to sql
func (query *Query) From(table string) *Query {
query.TableName = strings.Replace(table, " ", "", -1)
return query
}
// FromSubquery - func add FromSubquery to sql
func (query *Query) FromSubquery(table string) *Query {
query.TableName = "(" + table + ")"
return query
}
// Where - func add Where to sql
func (query *Query) Where(queryStr string, value interface{}) *Query {
query.WhereCond = append(query.WhereCond, WhereStruct{Expression: queryStr, Value: value})
query.IsWhere = true
return query
}
// And - func add And to sql
func (query *Query) And(queryStr string, value interface{}) *Query {
if query.IsWhere == true {
query.WhereCond = append(query.WhereCond, WhereStruct{Expression: queryStr, Value: value, Delimiter: " And "})
} else {
query.HavingCond = append(query.WhereCond, WhereStruct{Expression: queryStr, Value: value, Delimiter: " And "})
}
return query
}
// Or - func add Or to sql
func (query *Query) Or(queryStr string, value interface{}) *Query {
if query.IsWhere == true {
query.WhereCond = append(query.WhereCond, WhereStruct{Expression: queryStr, Value: value, Delimiter: " Or "})
} else {
query.HavingCond = append(query.WhereCond, WhereStruct{Expression: queryStr, Value: value, Delimiter: " Or "})
}
return query
}
// GroupBy - func add GroupBy to sql
func (query *Query) GroupBy(value interface{}) *Query {
query.GroupByStruct = append(query.GroupByStruct, value)
return query
}
// Distinct - add Distinct to sql queru
func (query *Query) Distinct() *Query {
query.DistinctStruct = true
return query
}
// Having - having sql expression
func (query *Query) Having(queryStr string, value interface{}) *Query {
query.HavingCond = append(query.HavingCond, WhereStruct{Expression: queryStr, Value: value})
query.IsWhere = false
return query
}