@@ -10,6 +10,7 @@ import (
10
10
"strconv"
11
11
"strings"
12
12
"text/template"
13
+ "time"
13
14
)
14
15
15
16
const (
@@ -23,18 +24,22 @@ type Dynamic interface {
23
24
format (string ) (string , []interface {})
24
25
}
25
26
26
- func dummyUpdateSet (b bool , column string , value interface {}, origin string ) string {
27
+ func dummyUpdateSet (b interface {} , column string , value interface {}, origin string ) string {
27
28
return origin
28
29
}
29
30
30
- func dummyWhere (b bool , cond , column string , value interface {}, origin string ) string {
31
+ func dummyWhere (b interface {} , cond , column string , value interface {}, origin string ) string {
31
32
return origin
32
33
}
33
34
34
35
func dummyParam (p interface {}) string {
35
36
return fmt .Sprint (p )
36
37
}
37
38
39
+ func dummyNil (p interface {}) bool {
40
+ return true
41
+ }
42
+
38
43
func commonAdd (a , b int ) int {
39
44
return a + b
40
45
}
@@ -44,8 +49,9 @@ type DummyDynamic struct{}
44
49
var dummyFuncMap = template.FuncMap {
45
50
"set" : dummyUpdateSet ,
46
51
"where" : dummyWhere ,
47
- "add" : commonAdd ,
48
52
"arg" : dummyParam ,
53
+
54
+ "add" : commonAdd ,
49
55
}
50
56
51
57
var gDummyDynamic = & DummyDynamic {}
@@ -72,17 +78,18 @@ func (d *MysqlDynamic) getFuncMap() template.FuncMap {
72
78
return template.FuncMap {
73
79
"set" : d .mysqlUpdateSet ,
74
80
"where" : d .mysqlWhere ,
75
- "add" : commonAdd ,
76
81
"arg" : d .Param ,
82
+
83
+ "add" : commonAdd ,
77
84
}
78
85
}
79
86
80
87
func (d * MysqlDynamic ) getParam () []interface {} {
81
88
return nil
82
89
}
83
90
84
- func (d * MysqlDynamic ) mysqlUpdateSet (b bool , column string , value interface {}, origin string ) string {
85
- if ! b {
91
+ func (d * MysqlDynamic ) mysqlUpdateSet (b interface {} , column string , value interface {}, origin string ) string {
92
+ if ! IsTrue ( b ) {
86
93
return origin
87
94
}
88
95
@@ -113,8 +120,8 @@ func (d *MysqlDynamic) mysqlUpdateSet(b bool, column string, value interface{},
113
120
return buf .String ()
114
121
}
115
122
116
- func (d * MysqlDynamic ) mysqlWhere (b bool , cond , column string , value interface {}, origin string ) string {
117
- if ! b {
123
+ func (d * MysqlDynamic ) mysqlWhere (b interface {} , cond , column string , value interface {}, origin string ) string {
124
+ if ! IsTrue ( b ) {
118
125
return origin
119
126
}
120
127
@@ -176,13 +183,14 @@ func (d *PostgresDynamic) getFuncMap() template.FuncMap {
176
183
return template.FuncMap {
177
184
"set" : d .postgresUpdateSet ,
178
185
"where" : d .postgresWhere ,
179
- "add" : commonAdd ,
180
186
"arg" : d .Param ,
187
+
188
+ "add" : commonAdd ,
181
189
}
182
190
}
183
191
184
- func (d * PostgresDynamic ) postgresUpdateSet (b bool , column string , value interface {}, origin string ) string {
185
- if ! b {
192
+ func (d * PostgresDynamic ) postgresUpdateSet (b interface {} , column string , value interface {}, origin string ) string {
193
+ if ! IsTrue ( b ) {
186
194
return origin
187
195
}
188
196
@@ -214,8 +222,8 @@ func (d *PostgresDynamic) postgresUpdateSet(b bool, column string, value interfa
214
222
return buf .String ()
215
223
}
216
224
217
- func (d * PostgresDynamic ) postgresWhere (b bool , cond , column string , value interface {}, origin string ) string {
218
- if ! b {
225
+ func (d * PostgresDynamic ) postgresWhere (b interface {} , cond , column string , value interface {}, origin string ) string {
226
+ if ! IsTrue ( b ) {
219
227
return origin
220
228
}
221
229
@@ -326,3 +334,17 @@ func replace(s, old, new string, n int) (string, int) {
326
334
w += copy (t [w :], s [start :])
327
335
return string (t [0 :w ]), count
328
336
}
337
+
338
+ func IsTrue (i interface {}) bool {
339
+ t , _ := template .IsTrue (i )
340
+ if ! t {
341
+ return t
342
+ }
343
+
344
+ if ti , ok := i .(time.Time ); ok {
345
+ if ti .IsZero () {
346
+ return false
347
+ }
348
+ }
349
+ return t
350
+ }
0 commit comments