Coverage Report
Generated on Fri, 15 Sep 2023 17:19:28 CST with gocov-html
Report Overview
github.com/gobatis/gobatis 59.5% 256/430
github.com/gobatis/gobatis/cast 47.0% 678/1444
github.com/gobatis/gobatis/driver/postgres 93.3% 14/15
github.com/gobatis/gobatis/dtd 0.0% 0/76
github.com/gobatis/gobatis/executor 45.8% 721/1574
github.com/gobatis/gobatis/parser/expr 43.4% 532/1226
github.com/gobatis/gobatis/parser/simplemath 52.6% 153/291
github.com/gobatis/gobatis/parser/structpath 45.2% 128/283
github.com/gobatis/gobatis/parser/xml 37.5% 178/475

This coverage report has been generated with the following command:

gocov test github.com/gobatis/gobatis github.com/gobatis/gobatis/cast github.com/gobatis/gobatis/driver/postgres github.com/gobatis/gobatis/dtd github.com/gobatis/gobatis/executor github.com/gobatis/gobatis/parser/expr github.com/gobatis/gobatis/parser/simplemath github.com/gobatis/gobatis/parser/structpath github.com/gobatis/gobatis/parser/xml | gocov-html 
Package Overview: github.com/gobatis/gobatis 59.5%

Please select a function to see what's left for testing.

DB.Affect(...) github.com/gobatis/gobatis/db.go 100.0% 3/3
DB.Debug(...) github.com/gobatis/gobatis/db.go 100.0% 3/3
returning.Raw(...) github.com/gobatis/gobatis/element.go 100.0% 2/2
exec.Raw(...) github.com/gobatis/gobatis/element.go 100.0% 2/2
DB.Scan(...) github.com/gobatis/gobatis/db.go 100.0% 2/2
where.Raw(...) github.com/gobatis/gobatis/element.go 100.0% 2/2
query.Raw(...) github.com/gobatis/gobatis/element.go 100.0% 2/2
onConflict.Raw(...) github.com/gobatis/gobatis/element.go 100.0% 2/2
DB.RowsAffected(...) github.com/gobatis/gobatis/db.go 100.0% 1/1
@434:65(...) github.com/gobatis/gobatis/db.go 100.0% 1/1
DB.addError(...) github.com/gobatis/gobatis/db.go 100.0% 1/1
DB.Close(...) github.com/gobatis/gobatis/db.go 100.0% 1/1
PagingScan(...) github.com/gobatis/gobatis/queryer.go 100.0% 1/1
Param(...) github.com/gobatis/gobatis/param.go 100.0% 1/1
DB.clone(...) github.com/gobatis/gobatis/db.go 100.0% 1/1
OnConflict(...) github.com/gobatis/gobatis/element.go 100.0% 1/1
Returning(...) github.com/gobatis/gobatis/element.go 100.0% 1/1
DB.Ping(...) github.com/gobatis/gobatis/db.go 100.0% 1/1
@370:10(...) github.com/gobatis/gobatis/db.go 100.0% 1/1
Where(...) github.com/gobatis/gobatis/element.go 100.0% 1/1
ParallelQuery.executor(...) github.com/gobatis/gobatis/queryer.go 88.9% 8/9
PagingQuery.executors(...) github.com/gobatis/gobatis/queryer.go 87.5% 14/16
@176:74(...) github.com/gobatis/gobatis/db.go 85.7% 6/7
Open(...) github.com/gobatis/gobatis/db.go 83.3% 5/6
DB.FetchQuery(...) github.com/gobatis/gobatis/db.go 81.8% 9/11
DB.Insert(...) github.com/gobatis/gobatis/db.go 80.0% 8/10
DB.Update(...) github.com/gobatis/gobatis/db.go 80.0% 8/10
DB.raw(...) github.com/gobatis/gobatis/db.go 80.0% 4/5
DB.ParallelQuery(...) github.com/gobatis/gobatis/db.go 75.0% 18/24
del.Raw(...) github.com/gobatis/gobatis/element.go 75.0% 15/20
DB.Delete(...) github.com/gobatis/gobatis/db.go 75.0% 6/8
DB.Exec(...) github.com/gobatis/gobatis/db.go 75.0% 6/8
DB.Query(...) github.com/gobatis/gobatis/db.go 71.4% 5/7
DB.InsertBatch(...) github.com/gobatis/gobatis/db.go 70.4% 19/27
update.Raw(...) github.com/gobatis/gobatis/element.go 70.0% 21/30
insert.Raw(...) github.com/gobatis/gobatis/element.go 68.2% 30/44
DB.PagingQuery(...) github.com/gobatis/gobatis/db.go 66.7% 4/6
DB.conn(...) github.com/gobatis/gobatis/db.go 66.7% 4/6
DB.context(...) github.com/gobatis/gobatis/db.go 66.7% 2/3
insertBatch.Raw(...) github.com/gobatis/gobatis/element.go 52.3% 23/44
@369:6(...) github.com/gobatis/gobatis/db.go 50.0% 3/6
DB.setExecutor(...) github.com/gobatis/gobatis/db.go 50.0% 2/4
@252:8(...) github.com/gobatis/gobatis/element.go 50.0% 1/2
@160:8(...) github.com/gobatis/gobatis/element.go 50.0% 1/2
DB.execute(...) github.com/gobatis/gobatis/db.go 44.4% 4/9
DB.Begin(...) github.com/gobatis/gobatis/db.go 0.0% 0/13
UseDB(...) github.com/gobatis/gobatis/db.go 0.0% 0/7
DB.Rollback(...) github.com/gobatis/gobatis/db.go 0.0% 0/6
DB.Commit(...) github.com/gobatis/gobatis/db.go 0.0% 0/6
DB.WithContext(...) github.com/gobatis/gobatis/db.go 0.0% 0/6
DB.WithTraceId(...) github.com/gobatis/gobatis/db.go 0.0% 0/6
selectColumns.Reflect(...) github.com/gobatis/gobatis/rows.go 0.0% 0/4
DB.Trace(...) github.com/gobatis/gobatis/db.go 0.0% 0/3
innerSQL.Raw(...) github.com/gobatis/gobatis/element.go 0.0% 0/2
@499:8(...) github.com/gobatis/gobatis/db.go 0.0% 0/2
@478:8(...) github.com/gobatis/gobatis/db.go 0.0% 0/2
DB.DB(...) github.com/gobatis/gobatis/db.go 0.0% 0/1
WithDebug(...) github.com/gobatis/gobatis/db.go 0.0% 0/1
fetch.Raw(...) github.com/gobatis/gobatis/element.go 0.0% 0/1
Config.Apply(...) github.com/gobatis/gobatis/config.go 0.0% 0/1
@446:8(...) github.com/gobatis/gobatis/db.go 0.0% 0/1
newInnerSQL(...) github.com/gobatis/gobatis/element.go 0.0% 0/1
build.Raw(...) github.com/gobatis/gobatis/element.go 0.0% 0/1
@53:12(...) github.com/gobatis/gobatis/db.go 0.0% 0/1
DB.LastInsertId(...) github.com/gobatis/gobatis/db.go 0.0% 0/1
DB.AssociateQuery(...) github.com/gobatis/gobatis/db.go 0.0% 0/1
LooseDest(...) github.com/gobatis/gobatis/param.go 0.0% 0/1
WithTraceId(...) github.com/gobatis/gobatis/db.go 0.0% 0/1
WithTx(...) github.com/gobatis/gobatis/db.go 0.0% 0/1
Config.AfterInitialize(...) github.com/gobatis/gobatis/config.go 0.0% 0/1
Select(...) github.com/gobatis/gobatis/rows.go 0.0% 0/1
Except(...) github.com/gobatis/gobatis/rows.go 0.0% 0/1
DB.Stats(...) github.com/gobatis/gobatis/db.go 0.0% 0/1
exceptColumns.Reflect(...) github.com/gobatis/gobatis/rows.go 0.0% 0/1
func DB.Affect
Back

In /Users/kun/gobatis/gobatis/db.go:

122
func (d *DB) Affect(v any) *DB {
123
        c := d.clone()
124
        c.affect = v
125
        return c
126
}
func DB.Debug
Back

In /Users/kun/gobatis/gobatis/db.go:

134
func (d *DB) Debug() *DB {
135
        c := d.clone()
136
        c.debug = true
137
        return c
138
}
func returning.Raw
Back

In /Users/kun/gobatis/gobatis/element.go:

422
func (r returning) Raw(namer dialector.Namer, tag string) (raw *executor.Raw, err error) {
423
        raw = &executor.Raw{
424
                SQL: fmt.Sprintf("returning %s", executor.TrimColumns(r.sql)),
425
        }
426
        return
427
}
func exec.Raw
Back

In /Users/kun/gobatis/gobatis/element.go:

403
func (e exec) Raw(namer dialector.Namer, tag string) (raw *executor.Raw, err error) {
404
        raw = &executor.Raw{
405
                SQL:    strings.TrimSpace(e.sql),
406
                Params: e.params,
407
        }
408
        return
409
}
func DB.Scan
Back

In /Users/kun/gobatis/gobatis/db.go:

223
func (d *DB) Scan(dest any) *DB {
224
        d.execute(dest)
225
        return d
226
}
func where.Raw
Back

In /Users/kun/gobatis/gobatis/element.go:

74
func (w where) Raw(namer dialector.Namer, tag string) (raw *executor.Raw, err error) {
75
        raw = &executor.Raw{
76
                SQL:    fmt.Sprintf("where %s", strings.TrimSpace(w.sql)),
77
                Params: w.params,
78
        }
79
        return
80
}
func query.Raw
Back

In /Users/kun/gobatis/gobatis/element.go:

389
func (q query) Raw(namer dialector.Namer, tag string) (raw *executor.Raw, err error) {
390
        raw = &executor.Raw{
391
                Query:  true,
392
                SQL:    q.sql,
393
                Params: q.params,
394
        }
395
        return
396
}
func onConflict.Raw
Back

In /Users/kun/gobatis/gobatis/element.go:

53
func (o onConflict) Raw(namer dialector.Namer, tag string) (raw *executor.Raw, err error) {
54
        raw = &executor.Raw{
55
                SQL:    fmt.Sprintf("on conflict(%s) %s", executor.TrimColumns(o.fields), o.sql),
56
                Params: o.params,
57
        }
58
        return
59
}
func DB.RowsAffected
Back

In /Users/kun/gobatis/gobatis/db.go:

400
func (d *DB) RowsAffected() (int64, error) {
401
        return d.rowsAffected, d.Error
402
}
func @434:65
Back

In /Users/kun/gobatis/gobatis/db.go:

434
func(s executor.Scanner) error {
435
                return query.Scan(s)
436
        }
func DB.addError
Back

In /Users/kun/gobatis/gobatis/db.go:

83
func (d *DB) addError(err error) {
84
        d.Error = executor.AddError(d.Error, err)
85
}
func DB.Close
Back

In /Users/kun/gobatis/gobatis/db.go:

140
func (d *DB) Close() error {
141
        return d.db.Close()
142
}
func PagingScan
Back

In /Users/kun/gobatis/gobatis/queryer.go:

43
func PagingScan(items any, count any) []any {
44
        return []any{items, count}
45
}
func Param
Back

In /Users/kun/gobatis/gobatis/param.go:

11
func Param(name string, value any) executor.Param {
12
        return executor.Param{Name: name, Value: value}
13
}
func DB.clone
Back

In /Users/kun/gobatis/gobatis/db.go:

87
func (d *DB) clone() *DB {
88
        return &DB{
89
                Config:   d.Config,
90
                Error:    d.Error,
91
                tx:       d.tx,
92
                ctx:      d.ctx,
93
                trace:    d.trace,
94
                debug:    d.debug,
95
                traceId:  d.traceId,
96
                affect:   d.affect,
97
                executed: d.executed,
98
                executor: nil,
99
        }
100
}
func OnConflict
Back

In /Users/kun/gobatis/gobatis/element.go:

61
func OnConflict(fields string, sql string, params ...executor.Param) Element {
62
        return &onConflict{
63
                fields: fields,
64
                sql:    sql,
65
                params: params,
66
        }
67
}
func Returning
Back

In /Users/kun/gobatis/gobatis/element.go:

429
func Returning(fields string) Element {
430
        return &returning{
431
                sql: fields,
432
        }
433
}
func DB.Ping
Back

In /Users/kun/gobatis/gobatis/db.go:

148
func (d *DB) Ping() error {
149
        return d.db.Ping()
150
}
func @370:10
Back

In /Users/kun/gobatis/gobatis/db.go:

370
func() {
371
                                wg.Done()
372
                        }
func Where
Back

In /Users/kun/gobatis/gobatis/element.go:

82
func Where(sql string, params ...executor.Param) Element {
83
        return &where{
84
                sql:    sql,
85
                params: params,
86
        }
87
}
func ParallelQuery.executor
Back

In /Users/kun/gobatis/gobatis/queryer.go:

20
func (q ParallelQuery) executor(namer dialector.Namer, tag string) (*executor.ParallelQuery, error) {
21
        if q.Scan == nil {
22
                return nil, fmt.Errorf("expect 1 scan dest; got nil")
23
        }
24
        var params []executor.Param
25
        for k, v := range q.Params {
26
                params = append(params, executor.Param{
27
                        Name:  k,
28
                        Value: v,
29
                })
30
        }
31
        raw := &executor.Raw{
32
                Ctx:    nil,
33
                Query:  true,
34
                SQL:    q.SQL,
35
                Params: nil,
36
        }
37
        for k, v := range q.Params {
38
                raw.Params = append(raw.Params, Param(k, v))
39
        }
40
        return &executor.ParallelQuery{Raw: raw, Dest: q.Scan}, nil
41
}
func PagingQuery.executors
Back

In /Users/kun/gobatis/gobatis/queryer.go:

60
func (p PagingQuery) executors(namer dialector.Namer, tag string) ([]ParallelQuery, error) {
61
        
62
        if p.Limit <= 0 {
63
                return nil, fmt.Errorf("invalid limit")
64
        }
65
        
66
        if l := len(p.Scan); l != 2 {
67
                return nil, fmt.Errorf("expect 2 scan dest; got: %d", l)
68
        }
69
        
70
        var params []executor.Param
71
        for k, v := range p.Params {
72
                params = append(params, executor.Param{
73
                        Name:  k,
74
                        Value: v,
75
                })
76
        }
77
        w := ""
78
        if p.Where != "" {
79
                w = fmt.Sprintf(" where %s", p.Where)
80
        }
81
        o := ""
82
        if p.Order != "" {
83
                o = fmt.Sprintf(" order by %s", p.Order)
84
        }
85
        q := ParallelQuery{
86
                SQL:    fmt.Sprintf("select %s from %s%s%s limit %d offset %d", p.Select, p.From, w, o, p.Limit, p.Limit*p.Page),
87
                Params: p.Params,
88
                Scan:   p.Scan[0],
89
        }
90
        
91
        c := ParallelQuery{
92
                SQL:    fmt.Sprintf("select count(%s) from %s%s", p.Count, p.From, w),
93
                Params: p.Params,
94
                Scan:   p.Scan[1],
95
        }
96
        
97
        return []ParallelQuery{q, c}, nil
98
}
func @176:74
Back

In /Users/kun/gobatis/gobatis/db.go:

176
func(s executor.Scanner) error {
177
                if d.executor.Query() {
178
                        e := s.Scan(dest)
179
                        if e != nil {
180
                                return e
181
                        }
182
                }
183
                d.rowsAffected = s.RowsAffected()
184
                d.lastInsertId = s.LastInsertId()
185
                return nil
186
        }
func Open
Back

In /Users/kun/gobatis/gobatis/db.go:

49
func Open(d dialector.Dialector, options ...Option) (db *DB, err error) {
50
        config := &Config{
51
                CreateBatchSize: 10,
52
                Plugins:         nil,
53
                NowFunc: func() time.Time {
54
                        return time.Now()
55
                },
56
                Dialector: d,
57
                Logger:    executor.DefaultLogger(),
58
                db:        nil,
59
        }
60
        config.db, err = d.DB()
61
        if err != nil {
62
                return
63
        }
64
        db = &DB{Config: config, Error: nil}
65
        return
66
}
func DB.FetchQuery
Back

In /Users/kun/gobatis/gobatis/db.go:

408
func (d *DB) FetchQuery(query FetchQuery) error {
409
        
410
        c := d.clone()
411
        
412
        raw := &executor.Raw{
413
                Ctx:    d.context(),
414
                Query:  true,
415
                SQL:    query.SQL,
416
                Params: nil,
417
        }
418
        
419
        if query.Scan == nil {
420
                d.addError(fmt.Errorf("FetchQeruy.Scan is nil"))
421
                return c.Error
422
        }
423
        
424
        for k, v := range query.Params {
425
                raw.Params = append(raw.Params, executor.Param{
426
                        Name:  k,
427
                        Value: v,
428
                })
429
        }
430
        if c.traceId == "" {
431
                c.traceId = fmt.Sprintf("TID%d", time.Now().UnixNano())
432
        }
433
        c.setExecutor(executor.NewFetchQuery(c.context(), c.conn(), raw, query.Batch))
434
        return c.executor.Execute(c.Logger, "", c.trace, c.debug, nil, func(s executor.Scanner) error {
435
                return query.Scan(s)
436
        })
437
}
func DB.Insert
Back

In /Users/kun/gobatis/gobatis/db.go:

271
func (d *DB) Insert(table string, data any, elems ...Element) *DB {
272
        c := d.clone()
273
        i := &insert{table: table, data: data, elems: elems}
274
        raw, err := c.raw(i)
275
        if err != nil {
276
                c.addError(err)
277
                return c
278
        }
279
        c.executor = executor.NewDefault(c.conn(), raw)
280
        if !raw.Query {
281
                c.execute(nil)
282
        }
283
        return c
284
}
func DB.Update
Back

In /Users/kun/gobatis/gobatis/db.go:

255
func (d *DB) Update(table string, data map[string]any, where Element, elems ...Element) *DB {
256
        c := d.clone()
257
        u := update{table: table, data: data, elems: append([]Element{where}, elems...)}
258
        raw, err := c.raw(u)
259
        if err != nil {
260
                c.addError(err)
261
                return c
262
        }
263
        c.executor = executor.NewDefault(c.conn(), raw)
264
        if !raw.Query {
265
                c.execute(nil)
266
        }
267
        return c
268
}
func DB.raw
Back

In /Users/kun/gobatis/gobatis/db.go:

201
func (d *DB) raw(element Element) (raw *executor.Raw, err error) {
202
        raw, err = element.Raw(d.Dialector.Namer(), "db")
203
        if err != nil {
204
                return
205
        }
206
        raw.Ctx = d.context()
207
        return
208
}
func DB.ParallelQuery
Back

In /Users/kun/gobatis/gobatis/db.go:

341
func (d *DB) ParallelQuery(queryer ...ParallelQuery) *DB {
342
        c := d.clone()
343
        if len(queryer) == 0 {
344
                c.addError(fmt.Errorf("no querer"))
345
                return c
346
        }
347
        if d.executor != nil {
348
                c.addError(fmt.Errorf("db executor confilct"))
349
                return c
350
        }
351
        
352
        var executors []executor.Executor
353
        for _, v := range queryer {
354
                item, err := v.executor(d.Dialector.Namer(), "db")
355
                if err != nil {
356
                        c.addError(err)
357
                        return c
358
                }
359
                item.Conn = c.conn()
360
                item.Raw.Ctx = c.context()
361
                executors = append(executors, item)
362
        }
363
        
364
        lock := sync.Mutex{}
365
        wg := sync.WaitGroup{}
366
        pos := executor.CallFuncPos(0)
367
        for _, v := range executors {
368
                wg.Add(1)
369
                go func(v executor.Executor) {
370
                        defer func() {
371
                                wg.Done()
372
                        }()
373
                        err := v.Execute(c.Logger, pos, d.trace, d.debug, nil, nil)
374
                        if err != nil {
375
                                lock.Lock()
376
                                c.addError(err)
377
                                lock.Unlock()
378
                        }
379
                }(v)
380
        }
381
        wg.Wait()
382
        
383
        return c
384
}
func del.Raw
Back

In /Users/kun/gobatis/gobatis/element.go:

350
func (d del) Raw(namer dialector.Namer, tag string) (raw *executor.Raw, err error) {
351
        for _, v := range d.elems {
352
                switch vv := v.(type) {
353
                case *where:
354
                        if d.where != nil {
355
                                err = fmt.Errorf("batis.Where() should be invoked no more than once")
356
                                return
357
                        }
358
                        d.where = vv
359
                default:
360
                        err = fmt.Errorf("method db.Delete() accept elements use of batis.Where()")
361
                        return
362
                }
363
        }
364
        
365
        raw = &executor.Raw{}
366
        
367
        var sqls []string
368
        sqls = append(sqls, fmt.Sprintf("delete from %s", namer.TableName(strings.TrimSpace(d.table))))
369
        
370
        if d.where != nil {
371
                var r *executor.Raw
372
                r, err = d.where.Raw(namer, tag)
373
                if err != nil {
374
                        return
375
                }
376
                sqls = append(sqls, fmt.Sprintf("%s", r.SQL))
377
                raw.Params = append(raw.Params, r.Params...)
378
        }
379
        raw.SQL = strings.Join(sqls, space)
380
        
381
        return
382
}
func DB.Delete
Back

In /Users/kun/gobatis/gobatis/db.go:

242
func (d *DB) Delete(table string, where Element) *DB {
243
        c := d.clone()
244
        raw, err := c.raw(del{table: table, elems: []Element{where}})
245
        if err != nil {
246
                c.addError(err)
247
                return c
248
        }
249
        c.executor = executor.NewDefault(c.conn(), raw)
250
        c.execute(nil)
251
        return c
252
}
func DB.Exec
Back

In /Users/kun/gobatis/gobatis/db.go:

229
func (d *DB) Exec(sql string, params ...executor.Param) *DB {
230
        c := d.clone()
231
        raw, err := c.raw(exec{sql: sql, params: params})
232
        if err != nil {
233
                c.addError(err)
234
                return c
235
        }
236
        c.executor = executor.NewDefault(c.conn(), raw)
237
        c.execute(nil)
238
        return c
239
}
func DB.Query
Back

In /Users/kun/gobatis/gobatis/db.go:

211
func (d *DB) Query(sql string, params ...executor.Param) *DB {
212
        c := d.clone()
213
        raw, err := c.raw(query{sql: sql, params: params})
214
        if err != nil {
215
                c.addError(err)
216
                return c
217
        }
218
        c.executor = executor.NewDefault(c.conn(), raw)
219
        return c
220
}
func DB.InsertBatch
Back

In /Users/kun/gobatis/gobatis/db.go:

294
func (d *DB) InsertBatch(table string, batch int, data any, elems ...Element) *DB {
295
        c := d.clone()
296
        
297
        if batch <= 0 {
298
                c.addError(fmt.Errorf("expect batch > 0, got %d", batch))
299
                return c
300
        }
301
        
302
        if data == nil {
303
                c.addError(fmt.Errorf("data is nil"))
304
                return c
305
        }
306
        
307
        chunks, err := executor.SplitStructSlice(data, batch)
308
        if err != nil {
309
                c.addError(err)
310
                return c
311
        }
312
        
313
        var raws []*executor.Raw
314
        var q bool
315
        for _, v := range chunks {
316
                i := &insertBatch{
317
                        table: table,
318
                        batch: batch,
319
                        data:  v,
320
                        elems: elems,
321
                }
322
                var raw *executor.Raw
323
                raw, err = c.raw(i)
324
                if err != nil {
325
                        c.addError(err)
326
                        return c
327
                }
328
                if raw.Query {
329
                        q = true
330
                }
331
                raws = append(raws, raw)
332
        }
333
        
334
        c.setExecutor(executor.NewInsertBatch(c.context(), c.conn(), raws))
335
        if !q {
336
                c.execute(nil)
337
        }
338
        return c
339
}
func update.Raw
Back

In /Users/kun/gobatis/gobatis/element.go:

97
func (u update) Raw(namer dialector.Namer, tag string) (raw *executor.Raw, err error) {
98
        for _, v := range u.elems {
99
                switch vv := v.(type) {
100
                case *where:
101
                        if u.where != nil {
102
                                err = fmt.Errorf("batis.Where() should be invoked no more than once")
103
                                return
104
                        }
105
                        u.where = vv
106
                case *returning:
107
                        if u.returning != nil {
108
                                err = fmt.Errorf("batis.Returning() should be invoked no more than once")
109
                                return
110
                        }
111
                        u.returning = vv
112
                default:
113
                        err = fmt.Errorf("method db.Update() accept elements use of batis.Where()")
114
                        return
115
                }
116
        }
117
        
118
        raw = &executor.Raw{
119
                Query: u.returning != nil,
120
        }
121
        
122
        var sqls []string
123
        sqls = append(sqls, fmt.Sprintf("update %s set", namer.TableName(u.table)))
124
        
125
        var sets []string
126
        for k := range u.data {
127
                sets = append(sets, fmt.Sprintf("%s=#{%s}", namer.ColumnName(k), k))
128
        }
129
        sqls = append(sqls, strings.Join(sets, ","))
130
        for k, v := range u.data {
131
                raw.Params = append(raw.Params, executor.Param{
132
                        Name:  k,
133
                        Value: v,
134
                })
135
        }
136
        if u.where != nil {
137
                var r *executor.Raw
138
                r, err = u.where.Raw(namer, tag)
139
                if err != nil {
140
                        return
141
                }
142
                sqls = append(sqls, fmt.Sprintf("%s", r.SQL))
143
                raw.Params = append(raw.Params, r.Params...)
144
        }
145
        raw.SQL = strings.Join(sqls, space)
146
        
147
        return
148
}
func insert.Raw
Back

In /Users/kun/gobatis/gobatis/element.go:

158
func (i insert) Raw(namer dialector.Namer, tag string) (raw *executor.Raw, err error) {
159
        
160
        defer func() {
161
                if err != nil {
162
                        err = fmt.Errorf("build insert sql error: %w", err)
163
                }
164
        }()
165
        
166
        for _, v := range i.elems {
167
                switch vv := v.(type) {
168
                case *onConflict:
169
                        if i.onConflict != nil {
170
                                err = fmt.Errorf("batis.OnConflict() should be invoked no more than once")
171
                                return
172
                        }
173
                        i.onConflict = vv
174
                case *returning:
175
                        if i.returning != nil {
176
                                err = fmt.Errorf("batis.Returning() should be invoked no more than once")
177
                                return
178
                        }
179
                        i.returning = vv
180
                default:
181
                        err = fmt.Errorf("method db.Insert() accept elements use of batis.OnConflict() or batis.Returning()")
182
                        return
183
                }
184
        }
185
        raw = &executor.Raw{
186
                Query: i.returning != nil,
187
        }
188
        var rows []executor.Row
189
        switch vv := i.data.(type) {
190
        case Rows:
191
                rows, err = vv.Reflect(namer, tag)
192
                if err != nil {
193
                        return
194
                }
195
        default:
196
                rows, err = executor.ReflectRows(i.data, namer, tag)
197
                if err != nil {
198
                        return
199
                }
200
        }
201
        
202
        if l := len(rows); l != 1 {
203
                err = fmt.Errorf("expect 1 row, got: %d", l)
204
                return
205
        }
206
        
207
        var sqls []string
208
        
209
        sqls = append(sqls, fmt.Sprintf("insert into %s(%s) values(%s)",
210
                namer.TableName(i.table),
211
                strings.Join(executor.RowColumns(rows[0], namer), ","),
212
                strings.Join(executor.RowVars(rows[0]), ","),
213
        ))
214
        raw.Params = append(raw.Params, executor.RowParams(rows[0])...)
215
        
216
        if i.onConflict != nil {
217
                var r *executor.Raw
218
                r, err = i.onConflict.Raw(namer, tag)
219
                if err != nil {
220
                        return
221
                }
222
                sqls = append(sqls, r.SQL)
223
                raw.Params = append(raw.Params, r.Params...)
224
        }
225
        
226
        if i.returning != nil {
227
                var r *executor.Raw
228
                r, err = i.returning.Raw(namer, tag)
229
                if err != nil {
230
                        return
231
                }
232
                sqls = append(sqls, r.SQL)
233
                raw.Params = append(raw.Params, r.Params...)
234
        }
235
        
236
        raw.SQL = strings.Join(sqls, space)
237
        
238
        return
239
}
func DB.PagingQuery
Back

In /Users/kun/gobatis/gobatis/db.go:

386
func (d *DB) PagingQuery(query PagingQuery) *DB {
387
        c := d.clone()
388
        queries, err := query.executors(d.Dialector.Namer(), "db")
389
        if err != nil {
390
                c.addError(err)
391
                return c
392
        }
393
        return c.ParallelQuery(queries...)
394
}
func DB.conn
Back

In /Users/kun/gobatis/gobatis/db.go:

189
func (d *DB) conn() executor.Conn {
190
        if d.tx != nil {
191
                return d.tx
192
        } else {
193
                conn, err := d.db.Conn(d.context())
194
                if err != nil {
195
                        d.addError(err)
196
                }
197
                return executor.NewDB(conn, d.traceId)
198
        }
199
}
func DB.context
Back

In /Users/kun/gobatis/gobatis/db.go:

156
func (d *DB) context() context.Context {
157
        if d.ctx == nil {
158
                return context.Background()
159
        }
160
        return d.ctx
161
}
func insertBatch.Raw
Back

In /Users/kun/gobatis/gobatis/element.go:

250
func (i insertBatch) Raw(namer dialector.Namer, tag string) (raw *executor.Raw, err error) {
251
        
252
        defer func() {
253
                if err != nil {
254
                        err = fmt.Errorf("build insert batch sql error: %w", err)
255
                }
256
        }()
257
        
258
        for _, v := range i.elems {
259
                switch vv := v.(type) {
260
                case *onConflict:
261
                        if i.onConflict != nil {
262
                                err = fmt.Errorf("batis.OnConflict() should be invoked no more than once")
263
                                return
264
                        }
265
                        i.onConflict = vv
266
                case *returning:
267
                        if i.returning != nil {
268
                                err = fmt.Errorf("batis.Returning() should be invoked no more than once")
269
                                return
270
                        }
271
                        i.returning = vv
272
                default:
273
                        err = fmt.Errorf("method db.Insert() accept elements use of batis.OnConflict() or batis.Returning()")
274
                        return
275
                }
276
        }
277
        
278
        raw = &executor.Raw{
279
                Query: i.returning != nil,
280
        }
281
        
282
        var rows []executor.Row
283
        switch vv := i.data.(type) {
284
        case Rows:
285
                rows, err = vv.Reflect(namer, tag)
286
                if err != nil {
287
                        return
288
                }
289
        default:
290
                rows, err = executor.ReflectRows(i.data, namer, tag)
291
                if err != nil {
292
                        return
293
                }
294
        }
295
        
296
        if l := len(rows); l == 0 {
297
                err = fmt.Errorf("expect rows legnth > 0, got: %d", l)
298
                return
299
        }
300
        
301
        var sqls []string
302
        
303
        sqls = append(sqls, fmt.Sprintf("insert into %s(%s) values%s",
304
                namer.TableName(i.table),
305
                strings.Join(executor.RowColumns(rows[0], namer), ","),
306
                strings.Join(executor.RowsVars(rows), ","),
307
        ))
308
        raw.Params = append(raw.Params, executor.RowsParams(rows)...)
309
        
310
        if i.onConflict != nil {
311
                var r *executor.Raw
312
                r, err = i.onConflict.Raw(namer, tag)
313
                if err != nil {
314
                        return
315
                }
316
                sqls = append(sqls, r.SQL)
317
                r.Params = append(r.Params, r.Params...)
318
        }
319
        
320
        if i.returning != nil {
321
                var r *executor.Raw
322
                r, err = i.returning.Raw(namer, tag)
323
                if err != nil {
324
                        return
325
                }
326
                sqls = append(sqls, r.SQL)
327
                r.Params = append(r.Params, r.Params...)
328
        }
329
        
330
        raw.SQL = strings.Join(sqls, space)
331
        
332
        return
333
}
func @369:6
Back

In /Users/kun/gobatis/gobatis/db.go:

369
func(v executor.Executor) {
370
                        defer func() {
371
                                wg.Done()
372
                        }()
373
                        err := v.Execute(c.Logger, pos, d.trace, d.debug, nil, nil)
374
                        if err != nil {
375
                                lock.Lock()
376
                                c.addError(err)
377
                                lock.Unlock()
378
                        }
379
                }
func DB.setExecutor
Back

In /Users/kun/gobatis/gobatis/db.go:

286
func (d *DB) setExecutor(e executor.Executor) {
287
        if d.executor != nil {
288
                d.addError(fmt.Errorf("executor duplicated"))
289
                return
290
        }
291
        d.executor = e
292
}
func @252:8
Back

In /Users/kun/gobatis/gobatis/element.go:

252
func() {
253
                if err != nil {
254
                        err = fmt.Errorf("build insert batch sql error: %w", err)
255
                }
256
        }
func @160:8
Back

In /Users/kun/gobatis/gobatis/element.go:

160
func() {
161
                if err != nil {
162
                        err = fmt.Errorf("build insert sql error: %w", err)
163
                }
164
        }
func DB.execute
Back

In /Users/kun/gobatis/gobatis/db.go:

163
func (d *DB) execute(dest any) {
164
        if d.Error != nil {
165
                return
166
        }
167
        if d.executor == nil {
168
                d.addError(fmt.Errorf("no executor"))
169
                return
170
        }
171
        if d.executed.Swap(true) {
172
                d.addError(fmt.Errorf("repeat execution"))
173
                return
174
        }
175
        
176
        d.addError(d.executor.Execute(d.Logger, "", d.trace, d.debug, d.affect, func(s executor.Scanner) error {
177
                if d.executor.Query() {
178
                        e := s.Scan(dest)
179
                        if e != nil {
180
                                return e
181
                        }
182
                }
183
                d.rowsAffected = s.RowsAffected()
184
                d.lastInsertId = s.LastInsertId()
185
                return nil
186
        }))
187
}
func DB.Begin
Back

In /Users/kun/gobatis/gobatis/db.go:

439
func (d *DB) Begin() *DB {
440
        c := d.clone()
441
        if c.tx != nil {
442
                c.addError(fmt.Errorf("there is already a transaction"))
443
                return c
444
        }
445
        
446
        defer func() {
447
                d.Logger.Trace("", c.traceId, true, d.Error, &executor.SQLTrace{
448
                        Trace:        d.trace,
449
                        Debug:        d.debug,
450
                        BeginAt:      time.Now(),
451
                        RawSQL:       "begin",
452
                        PlainSQL:     "begin",
453
                        RowsAffected: 0,
454
                })
455
        }()
456
        
457
        tx, err := c.db.Begin()
458
        if err != nil {
459
                c.addError(err)
460
                return c
461
        }
462
        
463
        if c.traceId == "" {
464
                c.traceId = fmt.Sprintf("%p", d)
465
        }
466
        
467
        c.tx = executor.NewTx(tx, c.traceId)
468
        
469
        return c
470
}
func UseDB
Back

In /Users/kun/gobatis/gobatis/db.go:

37
func UseDB(ctx context.Context) *DB {
38
        v := ctx.Value(dbKey)
39
        if v != nil {
40
                if vv, ok := v.(*DB); ok {
41
                        c := vv.clone()
42
                        c.ctx = ctx
43
                        return c
44
                }
45
        }
46
        return nil
47
}
func DB.Rollback
Back

In /Users/kun/gobatis/gobatis/db.go:

494
func (d *DB) Rollback() *DB {
495
        if d.tx == nil {
496
                d.addError(executor.ErrInvalidTransaction)
497
                return d
498
        }
499
        defer func() {
500
                d.addError(d.tx.Close())
501
                d.Logger.Trace("", d.traceId, true, d.Error, &executor.SQLTrace{
502
                        Trace:        d.trace,
503
                        Debug:        d.debug,
504
                        BeginAt:      time.Now(),
505
                        RawSQL:       "rollback",
506
                        PlainSQL:     "rollback",
507
                        RowsAffected: 0,
508
                })
509
        }()
510
        d.addError(d.tx.Rollback())
511
        return d
512
}
func DB.Commit
Back

In /Users/kun/gobatis/gobatis/db.go:

472
func (d *DB) Commit() *DB {
473
        if d.tx == nil {
474
                d.addError(executor.ErrInvalidTransaction)
475
                return d
476
        }
477
        
478
        defer func() {
479
                d.addError(d.tx.Close())
480
                d.Logger.Trace("", d.traceId, true, d.Error, &executor.SQLTrace{
481
                        Trace:        d.trace,
482
                        Debug:        d.debug,
483
                        BeginAt:      time.Now(),
484
                        RawSQL:       "commit",
485
                        PlainSQL:     "commit",
486
                        RowsAffected: 0,
487
                })
488
        }()
489
        
490
        d.addError(d.tx.Commit())
491
        return d
492
}
func DB.WithContext
Back

In /Users/kun/gobatis/gobatis/db.go:

102
func (d *DB) WithContext(ctx context.Context) *DB {
103
        v := UseDB(ctx)
104
        if v != nil {
105
                return v
106
        }
107
        c := d.clone()
108
        c.ctx = ctx
109
        return c
110
}
func DB.WithTraceId
Back

In /Users/kun/gobatis/gobatis/db.go:

112
func (d *DB) WithTraceId(traceId string) *DB {
113
        c := d.clone()
114
        if c.traceId != "" {
115
                d.addError(fmt.Errorf("set traceId  repeatedly"))
116
                return c
117
        }
118
        c.traceId = traceId
119
        return c
120
}
func selectColumns.Reflect
Back

In /Users/kun/gobatis/gobatis/rows.go:

34
func (s selectColumns) Reflect(namer dialector.Namer, tag string) (rows []executor.Row, err error) {
35
        rows, err = executor.ReflectRows(s.data, namer, tag)
36
        if err != nil {
37
                return
38
        }
39
40
        return
41
}
func DB.Trace
Back

In /Users/kun/gobatis/gobatis/db.go:

128
func (d *DB) Trace() *DB {
129
        c := d.clone()
130
        c.trace = true
131
        return c
132
}
func innerSQL.Raw
Back

In /Users/kun/gobatis/gobatis/element.go:

39
func (i innerSQL) Raw(namer dialector.Namer, tag string) (raw *executor.Raw, err error) {
40
        raw = &executor.Raw{
41
                SQL:    i.sql,
42
                Params: i.params,
43
        }
44
        return
45
}
func @499:8
Back

In /Users/kun/gobatis/gobatis/db.go:

499
func() {
500
                d.addError(d.tx.Close())
501
                d.Logger.Trace("", d.traceId, true, d.Error, &executor.SQLTrace{
502
                        Trace:        d.trace,
503
                        Debug:        d.debug,
504
                        BeginAt:      time.Now(),
505
                        RawSQL:       "rollback",
506
                        PlainSQL:     "rollback",
507
                        RowsAffected: 0,
508
                })
509
        }
func @478:8
Back

In /Users/kun/gobatis/gobatis/db.go:

478
func() {
479
                d.addError(d.tx.Close())
480
                d.Logger.Trace("", d.traceId, true, d.Error, &executor.SQLTrace{
481
                        Trace:        d.trace,
482
                        Debug:        d.debug,
483
                        BeginAt:      time.Now(),
484
                        RawSQL:       "commit",
485
                        PlainSQL:     "commit",
486
                        RowsAffected: 0,
487
                })
488
        }
func DB.DB
Back

In /Users/kun/gobatis/gobatis/db.go:

144
func (d *DB) DB() *sql.DB {
145
        return d.db
146
}
func WithDebug
Back

In /Users/kun/gobatis/gobatis/db.go:

33
func WithDebug(parent context.Context, debug bool) context.Context {
34
        return context.WithValue(parent, "debug", debug)
35
}
func fetch.Raw
Back

In /Users/kun/gobatis/gobatis/element.go:

338
func (f fetch) Raw(namer dialector.Namer, tag string) (raw *executor.Raw, err error) {
339
        //TODO implement me
340
        panic("implement me")
341
}
func Config.Apply
Back

In /Users/kun/gobatis/gobatis/config.go:

28
func (c Config) Apply(config *Config) error {
29
        //TODO implement me
30
        panic("implement me")
31
}
func @446:8
Back

In /Users/kun/gobatis/gobatis/db.go:

446
func() {
447
                d.Logger.Trace("", c.traceId, true, d.Error, &executor.SQLTrace{
448
                        Trace:        d.trace,
449
                        Debug:        d.debug,
450
                        BeginAt:      time.Now(),
451
                        RawSQL:       "begin",
452
                        PlainSQL:     "begin",
453
                        RowsAffected: 0,
454
                })
455
        }
func newInnerSQL
Back

In /Users/kun/gobatis/gobatis/element.go:

30
func newInnerSQL(sql string, params ...executor.Param) innerSQL {
31
        return innerSQL{sql: sql, params: params}
32
}
func build.Raw
Back

In /Users/kun/gobatis/gobatis/element.go:

414
func (b build) Raw(namer dialector.Namer, tag string) (raw *executor.Raw, err error) {
415
        panic("todo")
416
}
func @53:12
Back

In /Users/kun/gobatis/gobatis/db.go:

53
func() time.Time {
54
                        return time.Now()
55
                }
func DB.LastInsertId
Back

In /Users/kun/gobatis/gobatis/db.go:

396
func (d *DB) LastInsertId() (int64, error) {
397
        return d.lastInsertId, d.Error
398
}
func DB.AssociateQuery
Back

In /Users/kun/gobatis/gobatis/db.go:

404
func (d *DB) AssociateQuery(query AssociateQuery) error {
405
        return nil
406
}
func LooseDest
Back

In /Users/kun/gobatis/gobatis/param.go:

15
func LooseDest(dest any, fields ...string) Dest {
16
        return Dest{loose: true, dest: dest, fields: fields}
17
}
func WithTraceId
Back

In /Users/kun/gobatis/gobatis/db.go:

29
func WithTraceId(parent context.Context, traceId string) context.Context {
30
        return context.WithValue(parent, traceIdKey, traceId)
31
}
func WithTx
Back

In /Users/kun/gobatis/gobatis/db.go:

25
func WithTx(parent context.Context, tx *sql.Tx) context.Context {
26
        return context.WithValue(parent, dbKey, tx)
27
}
func Config.AfterInitialize
Back

In /Users/kun/gobatis/gobatis/config.go:

33
func (c Config) AfterInitialize(db *DB) error {
34
        //TODO implement me
35
        panic("implement me")
36
}
Back

In /Users/kun/gobatis/gobatis/queryer.go:

113
func AssociateLink(dest any, condition, inject string) any {
114
        return nil
115
}
func Select
Back

In /Users/kun/gobatis/gobatis/rows.go:

8
func Select(data any, columns string) Rows {
9
        return &selectColumns{
10
                columns: columns,
11
                data:    data,
12
        }
13
}
func Except
Back

In /Users/kun/gobatis/gobatis/rows.go:

15
func Except(data any, columns string) Rows {
16
        return &exceptColumns{
17
                data:    data,
18
                columns: columns,
19
        }
20
}
func DB.Stats
Back

In /Users/kun/gobatis/gobatis/db.go:

152
func (d *DB) Stats() sql.DBStats {
153
        return d.db.Stats()
154
}
func exceptColumns.Reflect
Back

In /Users/kun/gobatis/gobatis/rows.go:

48
func (e exceptColumns) Reflect(namer dialector.Namer, tag string) (rows []executor.Row, err error) {
49
        //TODO implement me
50
        panic("implement me")
51
}
Package Overview: github.com/gobatis/gobatis/cast 47.0%

Please select a function to see what's left for testing.

ToStringE(...) github.com/gobatis/gobatis/cast/caste.go 100.0% 26/26
ToTimeE(...) github.com/gobatis/gobatis/cast/caste.go 100.0% 11/11
Indirect(...) github.com/gobatis/gobatis/cast/caste.go 100.0% 8/8
indirectToStringerOrError(...) github.com/gobatis/gobatis/cast/caste.go 100.0% 8/8
AddUint64E(...) github.com/gobatis/gobatis/cast/calc.go 100.0% 8/8
MulUint64E(...) github.com/gobatis/gobatis/cast/calc.go 100.0% 8/8
BigAddUint64(...) github.com/gobatis/gobatis/cast/calc.go 100.0% 6/6
BigMulUint64(...) github.com/gobatis/gobatis/cast/calc.go 100.0% 6/6
MulInt64E(...) github.com/gobatis/gobatis/cast/calc.go 100.0% 6/6
SubInt64E(...) github.com/gobatis/gobatis/cast/calc.go 100.0% 6/6
AddInt64E(...) github.com/gobatis/gobatis/cast/calc.go 100.0% 6/6
parseDateWith(...) github.com/gobatis/gobatis/cast/caste.go 100.0% 4/4
DivInt64E(...) github.com/gobatis/gobatis/cast/calc.go 100.0% 4/4
DivUint64E(...) github.com/gobatis/gobatis/cast/calc.go 100.0% 4/4
BigAddInt64(...) github.com/gobatis/gobatis/cast/calc.go 100.0% 2/2
BigMulInt64(...) github.com/gobatis/gobatis/cast/calc.go 100.0% 2/2
BigSubInt64(...) github.com/gobatis/gobatis/cast/calc.go 100.0% 2/2
castOverFlowError(...) github.com/gobatis/gobatis/cast/caste.go 100.0% 1/1
resultOverFlowError(...) github.com/gobatis/gobatis/cast/calc.go 100.0% 1/1
StringToDate(...) github.com/gobatis/gobatis/cast/caste.go 100.0% 1/1
SubUint64E(...) github.com/gobatis/gobatis/cast/calc.go 100.0% 1/1
ToUint64E(...) github.com/gobatis/gobatis/cast/caste.go 95.3% 41/43
ToInt64E(...) github.com/gobatis/gobatis/cast/caste.go 90.9% 30/33
ToUintE(...) github.com/gobatis/gobatis/cast/caste.go 90.7% 49/54
ToUint32E(...) github.com/gobatis/gobatis/cast/caste.go 90.0% 54/60
ToUint16E(...) github.com/gobatis/gobatis/cast/caste.go 87.1% 61/70
ToInt32E(...) github.com/gobatis/gobatis/cast/caste.go 86.4% 38/44
ToUint8E(...) github.com/gobatis/gobatis/cast/caste.go 85.5% 65/76
IsNil(...) github.com/gobatis/gobatis/cast/caste.go 83.3% 5/6
ToInt16E(...) github.com/gobatis/gobatis/cast/caste.go 82.8% 48/58
ToIntE(...) github.com/gobatis/gobatis/cast/caste.go 82.7% 43/52
ToInt8E(...) github.com/gobatis/gobatis/cast/caste.go 81.2% 52/64
ToDecimalE(...) github.com/gobatis/gobatis/cast/caste.go 66.7% 6/9
DivInt32E(...) github.com/gobatis/gobatis/cast/calc.go 62.5% 5/8
SubInt8E(...) github.com/gobatis/gobatis/cast/calc.go 62.5% 5/8
MulIntE(...) github.com/gobatis/gobatis/cast/calc.go 62.5% 5/8
DivIntE(...) github.com/gobatis/gobatis/cast/calc.go 62.5% 5/8
MulInt16E(...) github.com/gobatis/gobatis/cast/calc.go 62.5% 5/8
AddIntE(...) github.com/gobatis/gobatis/cast/calc.go 62.5% 5/8
ToBinOperandE(...) github.com/gobatis/gobatis/cast/caste.go 57.7% 15/26
DivAnyE(...) github.com/gobatis/gobatis/cast/calc.go 37.5% 6/16
MulAnyE(...) github.com/gobatis/gobatis/cast/calc.go 31.2% 5/16
AddAnyE(...) github.com/gobatis/gobatis/cast/calc.go 29.4% 5/17
SubAnyE(...) github.com/gobatis/gobatis/cast/calc.go 25.0% 4/16
ToBoolE(...) github.com/gobatis/gobatis/cast/caste.go 0.0% 0/37
ToFloat32E(...) github.com/gobatis/gobatis/cast/caste.go 0.0% 0/23
ToFloat64E(...) github.com/gobatis/gobatis/cast/caste.go 0.0% 0/22
ToReflectTypeE(...) github.com/gobatis/gobatis/cast/caste.go 0.0% 0/20
NotEqualAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/19
EqualAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/19
UnaryMinusAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/19
UnaryPlusAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/18
GreaterAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/17
LessOrEqualAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/17
LessAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/17
GreaterOrEqualAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/17
BitClearAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/15
LeftShiftAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/15
RightShiftAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/15
ModAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/15
CaretAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/15
OrAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/15
AndAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/15
UnaryCaretAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/13
DivUint16E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
AddInt32E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
MulUint32E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
SubUint32E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
AddUint32E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
MulUint16E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
SubUint16E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
AddUint16E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
DivUint8E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
MulUint8E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
SubUint8E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
AddUint8E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
DivUintE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
SubIntE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
AddInt8E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
MulInt8E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
MulUintE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
SubUintE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
AddUintE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
MulInt32E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
SubInt32E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
DivUint32E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
DivInt16E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
SubInt16E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
AddInt16E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
DivInt8E(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/8
LogicAndAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/7
LogicOrAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/7
BigDivUint64(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/6
BigSubUint64(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/6
UnaryNotAnyE(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/4
Value.Add(...) github.com/gobatis/gobatis/cast/value.go 0.0% 0/2
jsonStringToObject(...) github.com/gobatis/gobatis/cast/caste.go 0.0% 0/2
BigDivInt64(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/2
MulFloat32(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/1
SubFloat64(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/1
AddFloat64(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/1
MulFloat64(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/1
DivFloat64(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/1
AddFloat32(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/1
SubFloat32(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/1
DivFloat32(...) github.com/gobatis/gobatis/cast/calc.go 0.0% 0/1
func ToStringE
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

1085
func ToStringE(i interface{}) (string, error) {
1086
        i = indirectToStringerOrError(i)
1087
        
1088
        switch s := i.(type) {
1089
        case string:
1090
                return s, nil
1091
        case bool:
1092
                return strconv.FormatBool(s), nil
1093
        case float64:
1094
                return strconv.FormatFloat(s, 'f', -1, 64), nil
1095
        case float32:
1096
                return strconv.FormatFloat(float64(s), 'f', -1, 32), nil
1097
        case int:
1098
                return strconv.Itoa(s), nil
1099
        case int64:
1100
                return strconv.FormatInt(s, 10), nil
1101
        case int32:
1102
                return strconv.Itoa(int(s)), nil
1103
        case int16:
1104
                return strconv.FormatInt(int64(s), 10), nil
1105
        case int8:
1106
                return strconv.FormatInt(int64(s), 10), nil
1107
        case uint:
1108
                return strconv.FormatUint(uint64(s), 10), nil
1109
        case uint64:
1110
                return strconv.FormatUint(uint64(s), 10), nil
1111
        case uint32:
1112
                return strconv.FormatUint(uint64(s), 10), nil
1113
        case uint16:
1114
                return strconv.FormatUint(uint64(s), 10), nil
1115
        case uint8:
1116
                return strconv.FormatUint(uint64(s), 10), nil
1117
        case []byte:
1118
                return string(s), nil
1119
        case template.HTML:
1120
                return string(s), nil
1121
        case template.URL:
1122
                return string(s), nil
1123
        case template.JS:
1124
                return string(s), nil
1125
        case template.CSS:
1126
                return string(s), nil
1127
        case template.HTMLAttr:
1128
                return string(s), nil
1129
        case nil:
1130
                return "", nil
1131
        case fmt.Stringer:
1132
                return s.String(), nil
1133
        case error:
1134
                return s.Error(), nil
1135
        default:
1136
                return "", fmt.Errorf("unable to cast %#v of type %T to string", i, i)
1137
        }
1138
}
func ToTimeE
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

29
func ToTimeE(i interface{}) (time.Time, error) {
30
        i = Indirect(i)
31
        
32
        switch v := i.(type) {
33
        case time.Time:
34
                return v, nil
35
        case string:
36
                return StringToDate(v)
37
        case int:
38
                return time.Unix(int64(v), 0), nil
39
        case int64:
40
                return time.Unix(v, 0), nil
41
        case int32:
42
                return time.Unix(int64(v), 0), nil
43
        case uint:
44
                return time.Unix(int64(v), 0), nil
45
        case uint64:
46
                return time.Unix(int64(v), 0), nil
47
        case uint32:
48
                return time.Unix(int64(v), 0), nil
49
        default:
50
                return time.Time{}, fmt.Errorf("unable to cast %#v of type %T to Time", i, i)
51
        }
52
}
func Indirect
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

1049
func Indirect(a interface{}) interface{} {
1050
        if a == nil {
1051
                return nil
1052
        }
1053
        if t := reflect.TypeOf(a); t.Kind() != reflect.Ptr {
1054
                // Avoid creating a reflect.Value if it's not a pointer.
1055
                return a
1056
        }
1057
        v := reflect.ValueOf(a)
1058
        for v.Kind() == reflect.Ptr && !v.IsNil() {
1059
                v = v.Elem()
1060
        }
1061
        return v.Interface()
1062
}
func indirectToStringerOrError
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

1069
func indirectToStringerOrError(a interface{}) interface{} {
1070
        if a == nil {
1071
                return nil
1072
        }
1073
        
1074
        var errorType = reflect.TypeOf((*error)(nil)).Elem()
1075
        var fmtStringerType = reflect.TypeOf((*fmt.Stringer)(nil)).Elem()
1076
        
1077
        v := reflect.ValueOf(a)
1078
        for !v.Type().Implements(fmtStringerType) && !v.Type().Implements(errorType) && v.Kind() == reflect.Ptr && !v.IsNil() {
1079
                v = v.Elem()
1080
        }
1081
        return v.Interface()
1082
}
func AddUint64E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

147
func AddUint64E(a, b uint64) (r uint64, err error) {
148
        r = a + b
149
        br := BigAddUint64(a, b)
150
        rr := &big.Int{}
151
        rr.SetUint64(r)
152
        if rr.Cmp(br) != 0 {
153
                err = resultOverFlowError("uint64")
154
                return
155
        }
156
        return
157
}
func MulUint64E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

171
func MulUint64E(a, b uint64) (r uint64, err error) {
172
        r = a * b
173
        br := BigMulUint64(a, b)
174
        rr := &big.Int{}
175
        rr.SetUint64(r)
176
        if rr.Cmp(br) != 0 {
177
                err = resultOverFlowError("uint64")
178
                return
179
        }
180
        return
181
}
func BigAddUint64
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

36
func BigAddUint64(a, b uint64) *big.Int {
37
        r := big.NewInt(0)
38
        ba := &big.Int{}
39
        ba.SetUint64(a)
40
        bb := &big.Int{}
41
        bb.SetUint64(b)
42
        return r.Add(ba, bb)
43
}
func BigMulUint64
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

54
func BigMulUint64(a, b uint64) *big.Int {
55
        r := big.NewInt(0)
56
        ba := &big.Int{}
57
        ba.SetUint64(a)
58
        bb := &big.Int{}
59
        bb.SetUint64(b)
60
        return r.Mul(ba, bb)
61
}
func MulInt64E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

124
func MulInt64E(a, b int64) (r int64, err error) {
125
        r = a * b
126
        br := BigMulInt64(a, b)
127
        if big.NewInt(r).Cmp(br) != 0 {
128
                err = resultOverFlowError("int64")
129
                return
130
        }
131
        return
132
}
func SubInt64E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

114
func SubInt64E(a, b int64) (r int64, err error) {
115
        r = a - b
116
        br := BigSubInt64(a, b)
117
        if big.NewInt(r).Cmp(br) != 0 {
118
                err = resultOverFlowError("int64")
119
                return
120
        }
121
        return
122
}
func AddInt64E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

104
func AddInt64E(a, b int64) (r int64, err error) {
105
        r = a + b
106
        br := BigAddInt64(a, b)
107
        if big.NewInt(r).Cmp(br) != 0 {
108
                err = resultOverFlowError("int64")
109
                return
110
        }
111
        return
112
}
func parseDateWith
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

1372
func parseDateWith(s string, dates []string) (d time.Time, e error) {
1373
        for _, dateType := range dates {
1374
                if d, e = time.Parse(dateType, s); e == nil {
1375
                        return
1376
                }
1377
        }
1378
        return d, fmt.Errorf("unable to parse date: %s", s)
1379
}
func DivInt64E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

134
func DivInt64E(a, b int64) (r int64, err error) {
135
        if b == 0 {
136
                err = fmt.Errorf("divide 0")
137
                return
138
        }
139
        //br := BigDivInt64(a, b)
140
        //if big.NewInt(r).Cmp(br) != 0 {
141
        //        err = resultOverFlowError("int64")
142
        //        return
143
        //}
144
        return a / b, nil
145
}
func DivUint64E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

183
func DivUint64E(a, b uint64) (r uint64, err error) {
184
        if b == 0 {
185
                err = fmt.Errorf("divide 0")
186
                return
187
        }
188
        //r = a / b
189
        //br := BigDivUint64(a, b)
190
        //rr := &big.Int{}
191
        //rr.SetUint64(r)
192
        //if rr.Cmp(br) != 0 {
193
        //        err = resultOverFlowError("uint64")
194
        //        return
195
        //}
196
        return a / b, nil
197
}
func BigAddInt64
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

16
func BigAddInt64(a, b int64) *big.Int {
17
        r := big.NewInt(0)
18
        return r.Add(big.NewInt(a), big.NewInt(b))
19
}
func BigMulInt64
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

26
func BigMulInt64(a, b int64) *big.Int {
27
        r := big.NewInt(0)
28
        return r.Mul(big.NewInt(a), big.NewInt(b))
29
}
func BigSubInt64
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

21
func BigSubInt64(a, b int64) *big.Int {
22
        r := big.NewInt(0)
23
        return r.Sub(big.NewInt(a), big.NewInt(b))
24
}
func castOverFlowError
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

24
func castOverFlowError(from, to string) error {
25
        return fmt.Errorf("result overflow type from %s to %s", from, to)
26
}
func resultOverFlowError
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

12
func resultOverFlowError(t string) error {
13
        return fmt.Errorf("result overflow type %s", t)
14
}
func StringToDate
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

1341
func StringToDate(s string) (time.Time, error) {
1342
        return parseDateWith(s, []string{
1343
                time.RFC3339,
1344
                "2006-01-02T15:04:05", // iso8601 without timezone
1345
                time.RFC1123Z,
1346
                time.RFC1123,
1347
                time.RFC822Z,
1348
                time.RFC822,
1349
                time.RFC850,
1350
                time.ANSIC,
1351
                time.UnixDate,
1352
                time.RubyDate,
1353
                "2006-01-02 15:04:05.999999999 -0700 MST", // Time.String()
1354
                "2006-01-02",
1355
                "02 Jan 2006",
1356
                "2006-01-02T15:04:05-0700", // RFC3339 without timezone hh:mm colon
1357
                "2006-01-02 15:04:05 -07:00",
1358
                "2006-01-02 15:04:05 -0700",
1359
                "2006-01-02 15:04:05Z07:00", // RFC3339 without T
1360
                "2006-01-02 15:04:05Z0700",  // RFC3339 without T or timezone hh:mm colon
1361
                "2006-01-02 15:04:05",
1362
                time.Kitchen,
1363
                time.Stamp,
1364
                time.StampMilli,
1365
                time.StampMicro,
1366
                time.StampNano,
1367
                "15:04:05",    // time without T
1368
                "15:04:05+00", // TODO test time with T
1369
        })
1370
}
func SubUint64E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

159
func SubUint64E(a, b uint64) (r uint64, err error) {
160
        //r = a - b
161
        //br := BigSubUint64(a, b)
162
        //rr := &big.Int{}
163
        //rr.SetUint64(r)
164
        //if rr.Cmp(br) != 0 {
165
        //        err = resultOverFlowError("uint64")
166
        //        return
167
        //}
168
        return a - b, nil
169
}
func ToUint64E
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

627
func ToUint64E(i interface{}) (uint64, error) {
628
        i = Indirect(i)
629
        
630
        switch s := i.(type) {
631
        case string:
632
                v, err := strconv.ParseUint(s, 0, 64)
633
                if err != nil {
634
                        return 0, fmt.Errorf("unable to cast %#v to uint64: %s", i, err)
635
                }
636
                d, err := decimal.NewFromString(s)
637
                if err != nil {
638
                        return 0, err
639
                }
640
                q, _ := decimal.NewFromString(s)
641
                if !d.Equal(q) {
642
                        return 0, castOverFlowError("string", "uint64")
643
                }
644
                return v, nil
645
        case int:
646
                if s < 0 {
647
                        return 0, errNegativeNotAllowed
648
                }
649
                return uint64(s), nil
650
        case int64:
651
                if s < 0 {
652
                        return 0, errNegativeNotAllowed
653
                }
654
                return uint64(s), nil
655
        case int32:
656
                if s < 0 {
657
                        return 0, errNegativeNotAllowed
658
                }
659
                return uint64(s), nil
660
        case int16:
661
                if s < 0 {
662
                        return 0, errNegativeNotAllowed
663
                }
664
                return uint64(s), nil
665
        case int8:
666
                if s < 0 {
667
                        return 0, errNegativeNotAllowed
668
                }
669
                return uint64(s), nil
670
        case uint:
671
                return uint64(s), nil
672
        case uint64:
673
                return s, nil
674
        case uint32:
675
                return uint64(s), nil
676
        case uint16:
677
                return uint64(s), nil
678
        case uint8:
679
                return uint64(s), nil
680
        case float32:
681
                if s < 0 {
682
                        return 0, errNegativeNotAllowed
683
                }
684
                return uint64(s), nil
685
        case float64:
686
                if s < 0 {
687
                        return 0, errNegativeNotAllowed
688
                }
689
                return uint64(s), nil
690
        case bool:
691
                if s {
692
                        return 1, nil
693
                }
694
                return 0, nil
695
        case nil:
696
                return 0, nil
697
        default:
698
                return 0, fmt.Errorf("unable to cast %#v of type %T to uint64", i, i)
699
        }
700
}
func ToInt64E
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

123
func ToInt64E(i interface{}) (int64, error) {
124
        i = Indirect(i)
125
        
126
        switch s := i.(type) {
127
        case int:
128
                return int64(s), nil
129
        case int64:
130
                return s, nil
131
        case int32:
132
                return int64(s), nil
133
        case int16:
134
                return int64(s), nil
135
        case int8:
136
                return int64(s), nil
137
        case uint:
138
                return int64(s), nil
139
        case uint64:
140
                a := big.Int{}
141
                a.SetUint64(s)
142
                b := big.NewInt(math.MaxInt64)
143
                if a.Cmp(b) > 1 {
144
                        return 0, castOverFlowError("uint64", "int64")
145
                }
146
                return int64(s), nil
147
        case uint32:
148
                return int64(s), nil
149
        case uint16:
150
                return int64(s), nil
151
        case uint8:
152
                return int64(s), nil
153
        case float64:
154
                return int64(s), nil
155
        case float32:
156
                return int64(s), nil
157
        case string:
158
                v, err := strconv.ParseInt(s, 0, 0)
159
                if err != nil {
160
                        return 0, fmt.Errorf("unable to cast %#v of type %T to int64", i, i)
161
                        
162
                }
163
                a, err := decimal.NewFromString(s)
164
                if err != nil {
165
                        return 0, err
166
                }
167
                if !a.Equal(decimal.NewFromInt(v)) {
168
                        return 0, castOverFlowError("string", "int64")
169
                }
170
                return v, nil
171
        case bool:
172
                if s {
173
                        return 1, nil
174
                }
175
                return 0, nil
176
        case nil:
177
                return 0, nil
178
        default:
179
                return 0, fmt.Errorf("unable to cast %#v of type %T to int64", i, i)
180
        }
181
}
func ToUintE
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

537
func ToUintE(i interface{}) (uint, error) {
538
        i = Indirect(i)
539
        
540
        switch s := i.(type) {
541
        case string:
542
                v, err := strconv.ParseUint(s, 0, 0)
543
                if err != nil {
544
                        return 0, fmt.Errorf("unable to cast %#v to uint: %s", i, err)
545
                }
546
                d, err := decimal.NewFromString(s)
547
                if err != nil {
548
                        return 0, err
549
                }
550
                r := uint(v)
551
                q, _ := decimal.NewFromString(fmt.Sprintf("%d", r))
552
                if !d.Equal(q) {
553
                        return 0, castOverFlowError("string", "uint")
554
                }
555
                return r, nil
556
        case int:
557
                if s < 0 {
558
                        return 0, errNegativeNotAllowed
559
                }
560
                return uint(s), nil
561
        case int64:
562
                if s < 0 {
563
                        return 0, errNegativeNotAllowed
564
                }
565
                r := uint(s)
566
                if int64(r) != s {
567
                        return 0, castOverFlowError("int64", "uint")
568
                }
569
                return r, nil
570
        case int32:
571
                if s < 0 {
572
                        return 0, errNegativeNotAllowed
573
                }
574
                return uint(s), nil
575
        case int16:
576
                if s < 0 {
577
                        return 0, errNegativeNotAllowed
578
                }
579
                return uint(s), nil
580
        case int8:
581
                if s < 0 {
582
                        return 0, errNegativeNotAllowed
583
                }
584
                return uint(s), nil
585
        case uint:
586
                return s, nil
587
        case uint64:
588
                r := uint(s)
589
                if uint64(r) != s {
590
                        return 0, castOverFlowError("uint64", "uint")
591
                }
592
                return r, nil
593
        case uint32:
594
                return uint(s), nil
595
        case uint16:
596
                return uint(s), nil
597
        case uint8:
598
                return uint(s), nil
599
        case float64:
600
                if s < 0 {
601
                        return 0, errNegativeNotAllowed
602
                }
603
                u := int64(s)
604
                r := uint(s)
605
                if int64(r) != u {
606
                        return 0, castOverFlowError("float64", "uint")
607
                }
608
                return r, nil
609
        case float32:
610
                if s < 0 {
611
                        return 0, errNegativeNotAllowed
612
                }
613
                return uint(s), nil
614
        case bool:
615
                if s {
616
                        return 1, nil
617
                }
618
                return 0, nil
619
        case nil:
620
                return 0, nil
621
        default:
622
                return 0, fmt.Errorf("unable to cast %#v of type %T to uint", i, i)
623
        }
624
}
func ToUint32E
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

703
func ToUint32E(i interface{}) (uint32, error) {
704
        i = Indirect(i)
705
        
706
        switch s := i.(type) {
707
        case string:
708
                v, err := strconv.ParseUint(s, 0, 32)
709
                if err != nil {
710
                        return 0, fmt.Errorf("unable to cast %#v to uint32: %s", i, err)
711
                }
712
                d, err := decimal.NewFromString(s)
713
                if err != nil {
714
                        return 0, err
715
                }
716
                r := uint32(v)
717
                q, _ := decimal.NewFromString(fmt.Sprintf("%d", r))
718
                if !d.Equal(q) {
719
                        return 0, castOverFlowError("string", "uint32")
720
                }
721
                return r, nil
722
        case int:
723
                if s < 0 {
724
                        return 0, errNegativeNotAllowed
725
                }
726
                r := uint32(s)
727
                if int(r) != s {
728
                        return 0, castOverFlowError("int", "uint32")
729
                }
730
                return r, nil
731
        case int64:
732
                if s < 0 {
733
                        return 0, errNegativeNotAllowed
734
                }
735
                r := uint32(s)
736
                if int64(r) != s {
737
                        return 0, castOverFlowError("int64", "uint32")
738
                }
739
                return r, nil
740
        case int32:
741
                if s < 0 {
742
                        return 0, errNegativeNotAllowed
743
                }
744
                return uint32(s), nil
745
        case int16:
746
                if s < 0 {
747
                        return 0, errNegativeNotAllowed
748
                }
749
                return uint32(s), nil
750
        case int8:
751
                if s < 0 {
752
                        return 0, errNegativeNotAllowed
753
                }
754
                return uint32(s), nil
755
        case uint:
756
                r := uint32(s)
757
                if uint(r) != s {
758
                        return 0, castOverFlowError("uint", "uint32")
759
                }
760
                return r, nil
761
        case uint64:
762
                r := uint32(s)
763
                if uint64(r) != s {
764
                        return 0, castOverFlowError("uint", "uint32")
765
                }
766
                return r, nil
767
        case uint32:
768
                return s, nil
769
        case uint16:
770
                return uint32(s), nil
771
        case uint8:
772
                return uint32(s), nil
773
        case float64:
774
                if s < 0 {
775
                        return 0, errNegativeNotAllowed
776
                }
777
                u := int64(s)
778
                r := uint32(s)
779
                if int64(r) != u {
780
                        return 0, castOverFlowError("float64", "uint32")
781
                }
782
                return r, nil
783
        case float32:
784
                if s < 0 {
785
                        return 0, errNegativeNotAllowed
786
                }
787
                return uint32(s), nil
788
        case bool:
789
                if s {
790
                        return 1, nil
791
                }
792
                return 0, nil
793
        case nil:
794
                return 0, nil
795
        default:
796
                return 0, fmt.Errorf("unable to cast %#v of type %T to uint32", i, i)
797
        }
798
}
func ToUint16E
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

801
func ToUint16E(i interface{}) (uint16, error) {
802
        i = Indirect(i)
803
        
804
        switch s := i.(type) {
805
        case string:
806
                v, err := strconv.ParseUint(s, 0, 16)
807
                if err != nil {
808
                        return 0, fmt.Errorf("unable to cast %#v to uint16: %s", i, err)
809
                }
810
                d, err := decimal.NewFromString(s)
811
                if err != nil {
812
                        return 0, err
813
                }
814
                r := uint16(v)
815
                q, _ := decimal.NewFromString(fmt.Sprintf("%d", r))
816
                if !d.Equal(q) {
817
                        return 0, castOverFlowError("string", "uint16")
818
                }
819
                return r, nil
820
        case int:
821
                if s < 0 {
822
                        return 0, errNegativeNotAllowed
823
                }
824
                r := uint16(s)
825
                if int(r) != s {
826
                        return 0, castOverFlowError("int", "uint16")
827
                }
828
                return r, nil
829
        case int64:
830
                if s < 0 {
831
                        return 0, errNegativeNotAllowed
832
                }
833
                r := uint16(s)
834
                if int64(r) != s {
835
                        return 0, castOverFlowError("int64", "uint16")
836
                }
837
                return r, nil
838
        case int32:
839
                if s < 0 {
840
                        return 0, errNegativeNotAllowed
841
                }
842
                r := uint16(s)
843
                if int32(r) != s {
844
                        return 0, castOverFlowError("int32", "uint16")
845
                }
846
                return r, nil
847
        case int16:
848
                if s < 0 {
849
                        return 0, errNegativeNotAllowed
850
                }
851
                return uint16(s), nil
852
        case int8:
853
                if s < 0 {
854
                        return 0, errNegativeNotAllowed
855
                }
856
                return uint16(s), nil
857
        case uint:
858
                r := uint16(s)
859
                if uint(r) != s {
860
                        return 0, castOverFlowError("uint", "uint16")
861
                }
862
                return r, nil
863
        case uint64:
864
                r := uint16(s)
865
                if uint64(r) != s {
866
                        return 0, castOverFlowError("uint64", "uint16")
867
                }
868
                return r, nil
869
        case uint32:
870
                r := uint16(s)
871
                if uint32(r) != s {
872
                        return 0, castOverFlowError("uint32", "uint16")
873
                }
874
                return r, nil
875
        case uint16:
876
                return s, nil
877
        case uint8:
878
                return uint16(s), nil
879
        case float64:
880
                if s < 0 {
881
                        return 0, errNegativeNotAllowed
882
                }
883
                u := int64(s)
884
                r := uint16(s)
885
                if int64(r) != u {
886
                        return 0, castOverFlowError("float64", "uint16")
887
                }
888
                return r, nil
889
        case float32:
890
                if s < 0 {
891
                        return 0, errNegativeNotAllowed
892
                }
893
                u := int32(s)
894
                r := uint16(s)
895
                if int32(r) != u {
896
                        return 0, castOverFlowError("float32", "uint16")
897
                }
898
                return r, nil
899
        case bool:
900
                if s {
901
                        return 1, nil
902
                }
903
                return 0, nil
904
        case nil:
905
                return 0, nil
906
        default:
907
                return 0, fmt.Errorf("unable to cast %#v of type %T to uint16", i, i)
908
        }
909
}
func ToInt32E
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

184
func ToInt32E(i interface{}) (int32, error) {
185
        i = Indirect(i)
186
        
187
        switch s := i.(type) {
188
        case int:
189
                r := int32(s)
190
                if int(r) != s {
191
                        return 0, castOverFlowError("int", "int32")
192
                }
193
                return r, nil
194
        case int64:
195
                r := int32(s)
196
                if int64(r) != s {
197
                        return 0, castOverFlowError("int64", "int32")
198
                }
199
                return r, nil
200
        case int32:
201
                return s, nil
202
        case int16:
203
                return int32(s), nil
204
        case int8:
205
                return int32(s), nil
206
        case uint:
207
                r := int32(s)
208
                if uint(r) != s {
209
                        return 0, castOverFlowError("uint", "int32")
210
                }
211
                return r, nil
212
        case uint64:
213
                r := int32(s)
214
                if uint64(r) != s {
215
                        return 0, castOverFlowError("uint64", "int32")
216
                }
217
                return r, nil
218
        case uint32:
219
                r := int32(s)
220
                if uint32(r) != s {
221
                        return 0, castOverFlowError("uint32", "int32")
222
                }
223
                return r, nil
224
        case uint16:
225
                return int32(s), nil
226
        case uint8:
227
                return int32(s), nil
228
        case float64:
229
                return int32(s), nil
230
        case float32:
231
                return int32(s), nil
232
        case string:
233
                v, err := strconv.ParseInt(s, 0, 0)
234
                if err != nil {
235
                        return 0, fmt.Errorf("unable to cast %#v of type %T to int32", i, i)
236
                }
237
                r := int32(v)
238
                d, err := decimal.NewFromString(s)
239
                if err != nil {
240
                        return 0, err
241
                }
242
                if !d.Equal(decimal.NewFromInt32(r)) {
243
                        return 0, castOverFlowError("string", "32")
244
                }
245
                return r, nil
246
        case bool:
247
                if s {
248
                        return 1, nil
249
                }
250
                return 0, nil
251
        case nil:
252
                return 0, nil
253
        default:
254
                return 0, fmt.Errorf("unable to cast %#v of type %T to int32", i, i)
255
        }
256
}
func ToUint8E
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

912
func ToUint8E(i interface{}) (uint8, error) {
913
        i = Indirect(i)
914
        
915
        switch s := i.(type) {
916
        case string:
917
                v, err := strconv.ParseUint(s, 0, 8)
918
                if err != nil {
919
                        return 0, fmt.Errorf("unable to cast %#v to uint8: %s", i, err)
920
                }
921
                d, err := decimal.NewFromString(s)
922
                if err != nil {
923
                        return 0, err
924
                }
925
                r := uint8(v)
926
                q, _ := decimal.NewFromString(fmt.Sprintf("%d", r))
927
                if !d.Equal(q) {
928
                        return 0, castOverFlowError("string", "uint8")
929
                }
930
                return r, nil
931
        case int:
932
                if s < 0 {
933
                        return 0, errNegativeNotAllowed
934
                }
935
                r := uint8(s)
936
                if int(r) != s {
937
                        return 0, castOverFlowError("int", "uint8")
938
                }
939
                return r, nil
940
        case int64:
941
                if s < 0 {
942
                        return 0, errNegativeNotAllowed
943
                }
944
                r := uint8(s)
945
                if int64(r) != s {
946
                        return 0, castOverFlowError("int64", "uint8")
947
                }
948
                return r, nil
949
        case int32:
950
                if s < 0 {
951
                        return 0, errNegativeNotAllowed
952
                }
953
                r := uint8(s)
954
                if int32(r) != s {
955
                        return 0, castOverFlowError("int32", "uint8")
956
                }
957
                return r, nil
958
        case int16:
959
                if s < 0 {
960
                        return 0, errNegativeNotAllowed
961
                }
962
                r := uint8(s)
963
                if int16(r) != s {
964
                        return 0, castOverFlowError("int16", "uint8")
965
                }
966
                return r, nil
967
        case int8:
968
                if s < 0 {
969
                        return 0, errNegativeNotAllowed
970
                }
971
                return uint8(s), nil
972
        case uint:
973
                r := uint8(s)
974
                if uint(r) != s {
975
                        return 0, castOverFlowError("uint", "uint8")
976
                }
977
                return r, nil
978
        case uint64:
979
                r := uint8(s)
980
                if uint64(r) != s {
981
                        return 0, castOverFlowError("uint64", "uint8")
982
                }
983
                return r, nil
984
        case uint32:
985
                r := uint8(s)
986
                if uint32(r) != s {
987
                        return 0, castOverFlowError("uint32", "uint8")
988
                }
989
                return r, nil
990
        case uint16:
991
                r := uint8(s)
992
                if uint16(r) != s {
993
                        return 0, castOverFlowError("uint16", "uint8")
994
                }
995
                return r, nil
996
        case uint8:
997
                return s, nil
998
        case float64:
999
                if s < 0 {
1000
                        return 0, errNegativeNotAllowed
1001
                }
1002
                u := int64(s)
1003
                r := uint8(s)
1004
                if int64(r) != u {
1005
                        return 0, castOverFlowError("float64", "uint8")
1006
                }
1007
                return r, nil
1008
        case float32:
1009
                if s < 0 {
1010
                        return 0, errNegativeNotAllowed
1011
                }
1012
                u := int32(s)
1013
                r := uint8(s)
1014
                if int32(r) != u {
1015
                        return 0, castOverFlowError("float32", "uint8")
1016
                }
1017
                return r, nil
1018
        case bool:
1019
                if s {
1020
                        return 1, nil
1021
                }
1022
                return 0, nil
1023
        case nil:
1024
                return 0, nil
1025
        default:
1026
                return 0, fmt.Errorf("unable to cast %#v of type %T to uint8", i, i)
1027
        }
1028
}
func IsNil
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

1179
func IsNil(val interface{}) bool {
1180
        if val == nil {
1181
                return true
1182
        }
1183
        rv := reflect.ValueOf(val)
1184
        switch rv.Kind() {
1185
        case reflect.Ptr, reflect.Func, reflect.Map, reflect.Slice, reflect.Interface:
1186
                return rv.IsNil()
1187
        }
1188
        return false
1189
}
func ToInt16E
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

259
func ToInt16E(i interface{}) (int16, error) {
260
        i = Indirect(i)
261
        switch s := i.(type) {
262
        case int:
263
                r := int16(s)
264
                if int(r) != s {
265
                        return 0, castOverFlowError("int", "int16")
266
                }
267
                return r, nil
268
        case int64:
269
                r := int16(s)
270
                if int64(r) != s {
271
                        return 0, castOverFlowError("int64", "int16")
272
                }
273
                return r, nil
274
        case int32:
275
                r := int16(s)
276
                if int32(r) != s {
277
                        return 0, castOverFlowError("int32", "int16")
278
                }
279
                return r, nil
280
        case int16:
281
                return s, nil
282
        case int8:
283
                return int16(s), nil
284
        case uint:
285
                r := int16(s)
286
                if uint(r) != s {
287
                        return 0, castOverFlowError("uint", "int16")
288
                }
289
                return int16(s), nil
290
        case uint64:
291
                r := int16(s)
292
                if uint64(r) != s {
293
                        return 0, castOverFlowError("uint64", "int16")
294
                }
295
                return r, nil
296
        case uint32:
297
                r := int16(s)
298
                if uint32(r) != s {
299
                        return 0, castOverFlowError("uint32", "int16")
300
                }
301
                return r, nil
302
        case uint16:
303
                r := int16(s)
304
                if uint16(r) != s {
305
                        return 0, castOverFlowError("uint64", "int16")
306
                }
307
                return r, nil
308
        case uint8:
309
                return int16(s), nil
310
        case float64:
311
                u := int64(s)
312
                r := int16(s)
313
                if int64(r) != u {
314
                        return 0, castOverFlowError("float64", "int16")
315
                }
316
                return r, nil
317
        case float32:
318
                u := int32(s)
319
                r := int16(s)
320
                if int32(r) != u {
321
                        return 0, castOverFlowError("float32", "int16")
322
                }
323
                return r, nil
324
        case string:
325
                v, err := strconv.ParseInt(s, 0, 0)
326
                if err != nil {
327
                        return 0, fmt.Errorf("unable to cast %#v of type %T to int16", i, i)
328
                }
329
                r := int16(v)
330
                d, err := decimal.NewFromString(s)
331
                if err != nil {
332
                        return 0, err
333
                }
334
                if !d.Equal(decimal.NewFromInt32(int32(r))) {
335
                        return 0, castOverFlowError("string", "int16")
336
                }
337
                return r, nil
338
        case bool:
339
                if s {
340
                        return 1, nil
341
                }
342
                return 0, nil
343
        case nil:
344
                return 0, nil
345
        default:
346
                return 0, fmt.Errorf("unable to cast %#v of type %T to int16", i, i)
347
        }
348
}
func ToIntE
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

452
func ToIntE(i interface{}) (int, error) {
453
        i = Indirect(i)
454
        
455
        switch s := i.(type) {
456
        case int:
457
                return s, nil
458
        case int64:
459
                r := int(s)
460
                if int64(r) != s {
461
                        return 0, castOverFlowError("int64", "int")
462
                }
463
                return r, nil
464
        case int32:
465
                r := int(s)
466
                if int32(r) != s {
467
                        return 0, castOverFlowError("int64", "int")
468
                }
469
                return r, nil
470
        case int16:
471
                return int(s), nil
472
        case int8:
473
                return int(s), nil
474
        case uint:
475
                r := int(s)
476
                if uint(r) != s {
477
                        return 0, castOverFlowError("uint", "int")
478
                }
479
                return r, nil
480
        case uint64:
481
                r := int(s)
482
                if uint64(r) != s {
483
                        return 0, castOverFlowError("uint64", "int")
484
                }
485
                return r, nil
486
        case uint32:
487
                r := int(s)
488
                if uint32(r) != s {
489
                        return 0, castOverFlowError("uint32", "int")
490
                }
491
                return r, nil
492
        case uint16:
493
                return int(s), nil
494
        case uint8:
495
                return int(s), nil
496
        case float64:
497
                u := int64(s)
498
                r := int(s)
499
                if int64(r) != u {
500
                        return 0, castOverFlowError("float64", "int")
501
                }
502
                return r, nil
503
        case float32:
504
                u := int32(s)
505
                r := int(s)
506
                if int32(r) != u {
507
                        return 0, castOverFlowError("float32", "int8")
508
                }
509
                return r, nil
510
        case string:
511
                v, err := strconv.ParseInt(s, 0, 0)
512
                if err != nil {
513
                        return 0, fmt.Errorf("unable to cast %#v of type %T to int", i, i)
514
                }
515
                r := int(v)
516
                d, err := decimal.NewFromString(s)
517
                if err != nil {
518
                        return 0, err
519
                }
520
                if !d.Equal(decimal.NewFromInt(int64(r))) {
521
                        return 0, castOverFlowError("string", "int")
522
                }
523
                return r, nil
524
        case bool:
525
                if s {
526
                        return 1, nil
527
                }
528
                return 0, nil
529
        case nil:
530
                return 0, nil
531
        default:
532
                return 0, fmt.Errorf("unable to cast %#v of type %T to int", i, i)
533
        }
534
}
func ToInt8E
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

351
func ToInt8E(i interface{}) (int8, error) {
352
        i = Indirect(i)
353
        
354
        switch s := i.(type) {
355
        case int:
356
                r := int8(s)
357
                if int(r) != s {
358
                        return 0, castOverFlowError("int", "int8")
359
                }
360
                return r, nil
361
        case int64:
362
                r := int8(s)
363
                if int64(r) != s {
364
                        return 0, castOverFlowError("int64", "int8")
365
                }
366
                return r, nil
367
        case int32:
368
                r := int8(s)
369
                if int32(r) != s {
370
                        return 0, castOverFlowError("int32", "int8")
371
                }
372
                return r, nil
373
        case int16:
374
                r := int8(s)
375
                if int16(r) != s {
376
                        return 0, castOverFlowError("int16", "int8")
377
                }
378
                return r, nil
379
        case int8:
380
                return s, nil
381
        case uint:
382
                r := int8(s)
383
                if uint(r) != s {
384
                        return 0, castOverFlowError("uint", "int8")
385
                }
386
                return r, nil
387
        case uint64:
388
                r := int8(s)
389
                if uint64(r) != s {
390
                        return 0, castOverFlowError("uint64", "int8")
391
                }
392
                return r, nil
393
        case uint32:
394
                r := int8(s)
395
                if uint32(r) != s {
396
                        return 0, castOverFlowError("uint32", "int8")
397
                }
398
                return r, nil
399
        case uint16:
400
                r := int8(s)
401
                if uint16(r) != s {
402
                        return 0, castOverFlowError("uint16", "int8")
403
                }
404
                return r, nil
405
        case uint8:
406
                r := int8(s)
407
                if uint8(r) != s {
408
                        return 0, castOverFlowError("uint8", "int8")
409
                }
410
                return r, nil
411
        case float64:
412
                u := int64(s)
413
                r := int8(s)
414
                if int64(r) != u {
415
                        return 0, castOverFlowError("float64", "int8")
416
                }
417
                return r, nil
418
        case float32:
419
                u := int32(s)
420
                r := int8(s)
421
                if int32(r) != u {
422
                        return 0, castOverFlowError("float32", "int8")
423
                }
424
                return r, nil
425
        case string:
426
                v, err := strconv.ParseInt(s, 0, 0)
427
                if err != nil {
428
                        return 0, fmt.Errorf("unable to cast %#v of type %T to int8", i, i)
429
                }
430
                r := int8(v)
431
                d, err := decimal.NewFromString(s)
432
                if err != nil {
433
                        return 0, err
434
                }
435
                if !d.Equal(decimal.NewFromInt32(int32(r))) {
436
                        return 0, castOverFlowError("string", "int8")
437
                }
438
                return r, nil
439
        case bool:
440
                if s {
441
                        return 1, nil
442
                }
443
                return 0, nil
444
        case nil:
445
                return 0, nil
446
        default:
447
                return 0, fmt.Errorf("unable to cast %#v of type %T to int8", i, i)
448
        }
449
}
func ToDecimalE
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

1030
func ToDecimalE(v interface{}) (decimal.Decimal, error) {
1031
        s, err := ToStringE(v)
1032
        if err != nil {
1033
                return decimal.Decimal{}, err
1034
        }
1035
        if s == "" {
1036
                return decimal.Zero, nil
1037
        }
1038
        d, err := decimal.NewFromString(s)
1039
        if err != nil {
1040
                return decimal.Decimal{}, err
1041
        }
1042
        return d, nil
1043
}
func DivInt32E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

394
func DivInt32E(a, b int32) (r int32, err error) {
395
        r1, err := DivInt64E(int64(a), int64(b))
396
        if err != nil {
397
                return
398
        }
399
        r = int32(r1)
400
        if int64(r) != r1 {
401
                err = resultOverFlowError("int32")
402
                return
403
        }
404
        return
405
}
func SubInt8E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

264
func SubInt8E(a, b int8) (r int8, err error) {
265
        r1, err := SubInt64E(int64(a), int64(b))
266
        if err != nil {
267
                return
268
        }
269
        r = int8(r1)
270
        if int64(r) != r1 {
271
                err = resultOverFlowError("int8")
272
                return
273
        }
274
        return
275
}
func MulIntE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

225
func MulIntE(a, b int) (r int, err error) {
226
        r1, err := MulInt64E(int64(a), int64(b))
227
        if err != nil {
228
                return
229
        }
230
        r = int(r1)
231
        if int64(r) != r1 {
232
                err = resultOverFlowError("int")
233
                return
234
        }
235
        return
236
}
func DivIntE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

238
func DivIntE(a, b int) (r int, err error) {
239
        r1, err := DivInt64E(int64(a), int64(b))
240
        if err != nil {
241
                return
242
        }
243
        r = int(r1)
244
        if int64(r) != r1 {
245
                err = resultOverFlowError("int")
246
                return
247
        }
248
        return
249
}
func MulInt16E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

329
func MulInt16E(a, b int16) (r int16, err error) {
330
        r1, err := MulInt64E(int64(a), int64(b))
331
        if err != nil {
332
                return
333
        }
334
        r = int16(r1)
335
        if int64(r) != r1 {
336
                err = resultOverFlowError("int16")
337
                return
338
        }
339
        return
340
}
func AddIntE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

199
func AddIntE(a, b int) (r int, err error) {
200
        r1, err := AddInt64E(int64(a), int64(b))
201
        if err != nil {
202
                return
203
        }
204
        r = int(r1)
205
        if int64(r) != r1 {
206
                err = resultOverFlowError("int")
207
                return
208
        }
209
        return
210
}
func ToBinOperandE
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

1191
func ToBinOperandE(left, right interface{}) (o1, o2 interface{}, err error) {
1192
        
1193
        _nil := false
1194
        
1195
        if IsNil(left) {
1196
                _nil = true
1197
        } else {
1198
                o1 = Indirect(left)
1199
        }
1200
        
1201
        if IsNil(right) {
1202
                _nil = true
1203
        } else {
1204
                o2 = Indirect(right)
1205
        }
1206
        
1207
        if _nil {
1208
                return
1209
        }
1210
        
1211
        switch left.(type) {
1212
        case int:
1213
                o2, err = ToIntE(right)
1214
        case int8:
1215
                o2, err = ToInt8E(right)
1216
        case int16:
1217
                o2, err = ToInt16E(right)
1218
        case int32:
1219
                o2, err = ToInt32E(right)
1220
        case int64:
1221
                o2, err = ToInt64E(right)
1222
        case uint:
1223
                o2, err = ToUintE(right)
1224
        case uint8:
1225
                o2, err = ToUint8E(right)
1226
        case uint16:
1227
                o2, err = ToUint16E(right)
1228
        case uint32:
1229
                o2, err = ToUint32E(right)
1230
        case uint64:
1231
                o2, err = ToUint64E(right)
1232
        case decimal.Decimal:
1233
                o2, err = ToDecimalE(right)
1234
        case string:
1235
                o2, err = ToStringE(right)
1236
        default:
1237
                err = fmt.Errorf("cant't convert")
1238
        }
1239
        if err != nil {
1240
                return nil, nil, fmt.Errorf("operand types are different and %s", err)
1241
        }
1242
        
1243
        return left, o2, nil
1244
}
func DivAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

716
func DivAnyE(left, right interface{}) (interface{}, error) {
717
        o1, o2, err := ToBinOperandE(left, right)
718
        if err != nil {
719
                return nil, err
720
        }
721
        switch s := o1.(type) {
722
        case int:
723
                return DivIntE(o1.(int), o2.(int))
724
        case int8:
725
                return DivInt8E(o1.(int8), o2.(int8))
726
        case int16:
727
                return DivInt16E(o1.(int16), o2.(int16))
728
        case int32:
729
                return DivInt32E(o1.(int32), o2.(int32))
730
        case int64:
731
                return DivInt64E(o1.(int64), o2.(int64))
732
        case uint:
733
                return DivUintE(o1.(uint), o2.(uint))
734
        case uint8:
735
                return DivUint8E(o1.(uint8), o2.(uint8))
736
        case uint16:
737
                return DivUint16E(o1.(uint16), o2.(uint16))
738
        case uint32:
739
                return DivUint32E(o1.(uint32), o2.(uint32))
740
        case uint64:
741
                return DivUint64E(o1.(uint64), o2.(uint64))
742
        case decimal.Decimal:
743
                return o1.(decimal.Decimal).Div(o2.(decimal.Decimal)), nil
744
        default:
745
                return nil, fmt.Errorf("unsupport div type '%s'", s)
746
        }
747
}
func MulAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

683
func MulAnyE(left, right interface{}) (interface{}, error) {
684
        o1, o2, err := ToBinOperandE(left, right)
685
        if err != nil {
686
                return nil, err
687
        }
688
        switch s := o1.(type) {
689
        case int:
690
                return MulIntE(o1.(int), o2.(int))
691
        case int8:
692
                return MulInt8E(o1.(int8), o2.(int8))
693
        case int16:
694
                return MulInt16E(o1.(int16), o2.(int16))
695
        case int32:
696
                return MulInt32E(o1.(int32), o2.(int32))
697
        case int64:
698
                return MulInt64E(o1.(int64), o2.(int64))
699
        case uint:
700
                return MulUintE(o1.(uint), o2.(uint))
701
        case uint8:
702
                return MulUint8E(o1.(uint8), o2.(uint8))
703
        case uint16:
704
                return MulUint16E(o1.(uint16), o2.(uint16))
705
        case uint32:
706
                return MulUint32E(o1.(uint32), o2.(uint32))
707
        case uint64:
708
                return MulUint64E(o1.(uint64), o2.(uint64))
709
        case decimal.Decimal:
710
                return o1.(decimal.Decimal).Mul(o2.(decimal.Decimal)), nil
711
        default:
712
                return nil, fmt.Errorf("unsupport mul type '%s'", s)
713
        }
714
}
func AddAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

615
func AddAnyE(left, right interface{}) (interface{}, error) {
616
        o1, o2, err := ToBinOperandE(left, right)
617
        if err != nil {
618
                return nil, err
619
        }
620
        switch s := o1.(type) {
621
        case int:
622
                return AddIntE(o1.(int), o2.(int))
623
        case int8:
624
                return AddInt8E(o1.(int8), o2.(int8))
625
        case int16:
626
                return AddInt16E(o1.(int16), o2.(int16))
627
        case int32:
628
                return AddInt32E(o1.(int32), o2.(int32))
629
        case int64:
630
                return AddInt64E(o1.(int64), o2.(int64))
631
        case uint:
632
                return AddUintE(o1.(uint), o2.(uint))
633
        case uint8:
634
                return AddUint8E(o1.(uint8), o2.(uint8))
635
        case uint16:
636
                return AddUint16E(o1.(uint16), o2.(uint16))
637
        case uint32:
638
                return AddUint32E(o1.(uint32), o2.(uint32))
639
        case uint64:
640
                return AddUint64E(o1.(uint64), o2.(uint64))
641
        case decimal.Decimal:
642
                return o1.(decimal.Decimal).Add(o2.(decimal.Decimal)), nil
643
        case string:
644
                return o1.(string) + o2.(string), nil
645
        default:
646
                return nil, fmt.Errorf("unsupport add type '%s'", s)
647
        }
648
}
func SubAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

650
func SubAnyE(left, right interface{}) (interface{}, error) {
651
        o1, o2, err := ToBinOperandE(left, right)
652
        if err != nil {
653
                return nil, err
654
        }
655
        switch s := o1.(type) {
656
        case int:
657
                return SubIntE(o1.(int), o2.(int))
658
        case int8:
659
                return SubInt8E(o1.(int8), o2.(int8))
660
        case int16:
661
                return SubInt16E(o1.(int16), o2.(int16))
662
        case int32:
663
                return SubInt32E(o1.(int32), o2.(int32))
664
        case int64:
665
                return SubInt64E(o1.(int64), o2.(int64))
666
        case uint:
667
                return SubUintE(o1.(uint), o2.(uint))
668
        case uint8:
669
                return SubUint8E(o1.(uint8), o2.(uint8))
670
        case uint16:
671
                return SubUint16E(o1.(uint16), o2.(uint16))
672
        case uint32:
673
                return SubUint32E(o1.(uint32), o2.(uint32))
674
        case uint64:
675
                return SubUint64E(o1.(uint64), o2.(uint64))
676
        case decimal.Decimal:
677
                return o1.(decimal.Decimal).Sub(o2.(decimal.Decimal)), nil
678
        default:
679
                return nil, fmt.Errorf("unsupport sub type '%s'", s)
680
        }
681
}
func ToBoolE
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

55
func ToBoolE(i interface{}) (bool, error) {
56
        i = Indirect(i)
57
        
58
        switch b := i.(type) {
59
        case bool:
60
                return b, nil
61
        case nil:
62
                return false, nil
63
        case int:
64
                if i.(int) != 0 {
65
                        return true, nil
66
                }
67
                return false, nil
68
        case int8:
69
                if i.(int8) != 0 {
70
                        return true, nil
71
                }
72
                return false, nil
73
        case int16:
74
                if i.(int16) != 0 {
75
                        return true, nil
76
                }
77
                return false, nil
78
        case int32:
79
                if i.(int32) != 0 {
80
                        return true, nil
81
                }
82
                return false, nil
83
        case int64:
84
                if i.(int64) != 0 {
85
                        return true, nil
86
                }
87
                return false, nil
88
        case uint:
89
                if i.(uint) != 0 {
90
                        return true, nil
91
                }
92
                return false, nil
93
        case uint8:
94
                if i.(uint8) != 0 {
95
                        return true, nil
96
                }
97
                return false, nil
98
        case uint16:
99
                if i.(uint16) != 0 {
100
                        return true, nil
101
                }
102
                return false, nil
103
        case uint32:
104
                if i.(uint32) != 0 {
105
                        return true, nil
106
                }
107
                return false, nil
108
        case uint64:
109
                if i.(uint64) != 0 {
110
                        return true, nil
111
                }
112
                return false, nil
113
        case decimal.Decimal:
114
                return !i.(decimal.Decimal).Equal(decimal.Zero), nil
115
        case string:
116
                return strconv.ParseBool(i.(string))
117
        default:
118
                return false, fmt.Errorf("unable to cast %#v of type %T to bool", i, i)
119
        }
120
}
func ToFloat32E
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

1292
func ToFloat32E(i interface{}) (float32, error) {
1293
        i = Indirect(i)
1294
        
1295
        switch s := i.(type) {
1296
        case float64:
1297
                return float32(s), nil
1298
        case float32:
1299
                return s, nil
1300
        case int:
1301
                return float32(s), nil
1302
        case int64:
1303
                return float32(s), nil
1304
        case int32:
1305
                return float32(s), nil
1306
        case int16:
1307
                return float32(s), nil
1308
        case int8:
1309
                return float32(s), nil
1310
        case uint:
1311
                return float32(s), nil
1312
        case uint64:
1313
                return float32(s), nil
1314
        case uint32:
1315
                return float32(s), nil
1316
        case uint16:
1317
                return float32(s), nil
1318
        case uint8:
1319
                return float32(s), nil
1320
        case string:
1321
                v, err := strconv.ParseFloat(s, 32)
1322
                if err == nil {
1323
                        return float32(v), nil
1324
                }
1325
                return 0, fmt.Errorf("unable to cast %#v of type %T to float32", i, i)
1326
        case bool:
1327
                if s {
1328
                        return 1, nil
1329
                }
1330
                return 0, nil
1331
        case nil:
1332
                return 0, nil
1333
        default:
1334
                return 0, fmt.Errorf("unable to cast %#v of type %T to float32", i, i)
1335
        }
1336
}
func ToFloat64E
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

1247
func ToFloat64E(i interface{}) (float64, error) {
1248
        i = Indirect(i)
1249
        
1250
        switch s := i.(type) {
1251
        case float64:
1252
                return s, nil
1253
        case float32:
1254
                return float64(s), nil
1255
        case int:
1256
                return float64(s), nil
1257
        case int64:
1258
                return float64(s), nil
1259
        case int32:
1260
                return float64(s), nil
1261
        case int16:
1262
                return float64(s), nil
1263
        case int8:
1264
                return float64(s), nil
1265
        case uint:
1266
                return float64(s), nil
1267
        case uint64:
1268
                return float64(s), nil
1269
        case uint32:
1270
                return float64(s), nil
1271
        case uint16:
1272
                return float64(s), nil
1273
        case uint8:
1274
                return float64(s), nil
1275
        case string:
1276
                v, err := strconv.ParseFloat(s, 64)
1277
                if err == nil {
1278
                        return v, nil
1279
                }
1280
                return 0, fmt.Errorf("unable to cast %#v of type %T to float64", i, i)
1281
        case bool:
1282
                if s {
1283
                        return 1, nil
1284
                }
1285
                return 0, nil
1286
        default:
1287
                return 0, fmt.Errorf("unable to cast %#v of type %T to float64", i, i)
1288
        }
1289
}
func ToReflectTypeE
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

1140
func ToReflectTypeE(_type reflect.Type, operand interface{}) (interface{}, error) {
1141
        var err error
1142
        var result interface{}
1143
        switch _type.Kind() {
1144
        case reflect.Int8:
1145
                result, err = ToInt8E(operand)
1146
        case reflect.Int16:
1147
                result, err = ToInt16E(operand)
1148
        case reflect.Int32:
1149
                result, err = ToInt32E(operand)
1150
        case reflect.Int64:
1151
                result, err = ToInt64E(operand)
1152
        case reflect.Uint:
1153
                result, err = ToUintE(operand)
1154
        case reflect.Uint8:
1155
                result, err = ToUint8E(operand)
1156
        case reflect.Uint16:
1157
                result, err = ToUint16E(operand)
1158
        case reflect.Uint32:
1159
                result, err = ToUint32E(operand)
1160
        case reflect.Uint64:
1161
                result, err = ToUint64E(operand)
1162
        case reflect.String:
1163
                result, err = ToStringE(operand)
1164
        case reflect.Interface:
1165
                result = operand
1166
        default:
1167
                if _type.Kind() == reflect.Struct && _type.Name() == "decimal.Decimal" {
1168
                        result, err = ToDecimalE(operand)
1169
                } else {
1170
                        return nil, fmt.Errorf("unsupport convert type '%s'", _type)
1171
                }
1172
        }
1173
        if err != nil {
1174
                return nil, fmt.Errorf("convert type '%s' error: %s", _type, err)
1175
        }
1176
        return result, nil
1177
}
func NotEqualAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

1007
func NotEqualAnyE(left, right interface{}) (bool, error) {
1008
        
1009
        o1, o2, err := ToBinOperandE(left, right)
1010
        if err != nil {
1011
                return false, err
1012
        }
1013
        
1014
        if o1 == nil || o2 == nil {
1015
                return o1 != o2, nil
1016
        }
1017
        
1018
        switch s := o1.(type) {
1019
        case int:
1020
                return o1.(int) != o2.(int), nil
1021
        case int8:
1022
                return o1.(int8) != o2.(int8), nil
1023
        case int16:
1024
                return o1.(int16) != o2.(int16), nil
1025
        case int32:
1026
                return o1.(int32) != o2.(int32), nil
1027
        case int64:
1028
                return o1.(int64) != o2.(int64), nil
1029
        case uint:
1030
                return o1.(uint) != o2.(uint), nil
1031
        case uint8:
1032
                return o1.(uint8) != o2.(uint8), nil
1033
        case uint16:
1034
                return o1.(uint16) != o2.(uint16), nil
1035
        case uint32:
1036
                return o1.(uint32) != o2.(uint32), nil
1037
        case uint64:
1038
                return o1.(uint64) != o2.(uint64), nil
1039
        case string:
1040
                return o1.(string) != o2.(string), nil
1041
        case decimal.Decimal:
1042
                return !o1.(decimal.Decimal).Equal(o2.(decimal.Decimal)), nil
1043
        default:
1044
                return false, fmt.Errorf("unsupport not equal type '%s'", s)
1045
        }
1046
}
func EqualAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

966
func EqualAnyE(left, right interface{}) (bool, error) {
967
        
968
        o1, o2, err := ToBinOperandE(left, right)
969
        if err != nil {
970
                return false, err
971
        }
972
        
973
        if o1 == nil || o2 == nil {
974
                return o1 == o2, nil
975
        }
976
        
977
        switch s := o1.(type) {
978
        case int:
979
                return o1.(int) == o2.(int), nil
980
        case int8:
981
                return o1.(int8) == o2.(int8), nil
982
        case int16:
983
                return o1.(int16) == o2.(int16), nil
984
        case int32:
985
                return o1.(int32) == o2.(int32), nil
986
        case int64:
987
                return o1.(int64) == o2.(int64), nil
988
        case uint:
989
                return o1.(uint) == o2.(uint), nil
990
        case uint8:
991
                return o1.(uint8) == o2.(uint8), nil
992
        case uint16:
993
                return o1.(uint16) == o2.(uint16), nil
994
        case uint32:
995
                return o1.(uint32) == o2.(uint32), nil
996
        case uint64:
997
                return o1.(uint64) == o2.(uint64), nil
998
        case string:
999
                return o1.(string) == o2.(string), nil
1000
        case decimal.Decimal:
1001
                return o1.(decimal.Decimal).Equal(o2.(decimal.Decimal)), nil
1002
        default:
1003
                return false, fmt.Errorf("unsupport equal type '%s'", s)
1004
        }
1005
}
func UnaryMinusAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

1223
func UnaryMinusAnyE(v interface{}) (interface{}, error) {
1224
        v = Indirect(v)
1225
        switch s := v.(type) {
1226
        case int:
1227
                return -v.(int), nil
1228
        case int8:
1229
                return -v.(int8), nil
1230
        case int16:
1231
                return -v.(int16), nil
1232
        case int32:
1233
                return -v.(int32), nil
1234
        case int64:
1235
                return -v.(int64), nil
1236
        case uint:
1237
                return -v.(uint), nil
1238
        case uint8:
1239
                return -v.(uint8), nil
1240
        case uint16:
1241
                return -v.(uint16), nil
1242
        case uint32:
1243
                return -v.(uint32), nil
1244
        case uint64:
1245
                return -v.(uint64), nil
1246
        case decimal.Decimal:
1247
                vv := v.(decimal.Decimal).String()
1248
                if strings.HasPrefix(vv, "-") {
1249
                        r, err := decimal.NewFromString(strings.TrimPrefix(vv, "-"))
1250
                        return r, err
1251
                } else {
1252
                        r, err := decimal.NewFromString("-" + vv)
1253
                        return r, err
1254
                }
1255
        default:
1256
                return false, fmt.Errorf("unsupport unary minus type '%s'", s)
1257
        }
1258
}
func UnaryPlusAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

1188
func UnaryPlusAnyE(v interface{}) (interface{}, error) {
1189
        v = Indirect(v)
1190
        switch s := v.(type) {
1191
        case int:
1192
                return +v.(int), nil
1193
        case int8:
1194
                return +v.(int8), nil
1195
        case int16:
1196
                return +v.(int16), nil
1197
        case int32:
1198
                return +v.(int32), nil
1199
        case int64:
1200
                return +v.(int64), nil
1201
        case uint:
1202
                return +v.(uint), nil
1203
        case uint8:
1204
                return +v.(uint8), nil
1205
        case uint16:
1206
                return +v.(uint16), nil
1207
        case uint32:
1208
                return +v.(uint32), nil
1209
        case uint64:
1210
                return +v.(uint64), nil
1211
        case decimal.Decimal:
1212
                vv := v.(decimal.Decimal).String()
1213
                if strings.HasPrefix(vv, "-") {
1214
                        r, err := decimal.NewFromString(strings.TrimPrefix(vv, "-"))
1215
                        return r, err
1216
                }
1217
                return v.(decimal.Decimal), nil
1218
        default:
1219
                return false, fmt.Errorf("unsupport unary plus type '%s'", s)
1220
        }
1221
}
func GreaterAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

1118
func GreaterAnyE(left, right interface{}) (bool, error) {
1119
        o1, o2, err := ToBinOperandE(left, right)
1120
        if err != nil {
1121
                return false, err
1122
        }
1123
        switch s := o1.(type) {
1124
        case int:
1125
                return o1.(int) > o2.(int), nil
1126
        case int8:
1127
                return o1.(int8) > o2.(int8), nil
1128
        case int16:
1129
                return o1.(int16) > o2.(int16), nil
1130
        case int32:
1131
                return o1.(int32) > o2.(int32), nil
1132
        case int64:
1133
                return o1.(int64) > o2.(int64), nil
1134
        case uint:
1135
                return o1.(uint) > o2.(uint), nil
1136
        case uint8:
1137
                return o1.(uint8) > o2.(uint8), nil
1138
        case uint16:
1139
                return o1.(uint16) > o2.(uint16), nil
1140
        case uint32:
1141
                return o1.(uint32) > o2.(uint32), nil
1142
        case uint64:
1143
                return o1.(uint64) > o2.(uint64), nil
1144
        case string:
1145
                return o1.(string) > o2.(string), nil
1146
        case decimal.Decimal:
1147
                return o1.(decimal.Decimal).GreaterThanOrEqual(o2.(decimal.Decimal)), nil
1148
        default:
1149
                return false, fmt.Errorf("unsupport greater type '%s'", s)
1150
        }
1151
}
func LessOrEqualAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

1083
func LessOrEqualAnyE(left, right interface{}) (bool, error) {
1084
        o1, o2, err := ToBinOperandE(left, right)
1085
        if err != nil {
1086
                return false, err
1087
        }
1088
        switch s := o1.(type) {
1089
        case int:
1090
                return o1.(int) <= o2.(int), nil
1091
        case int8:
1092
                return o1.(int8) <= o2.(int8), nil
1093
        case int16:
1094
                return o1.(int16) <= o2.(int16), nil
1095
        case int32:
1096
                return o1.(int32) <= o2.(int32), nil
1097
        case int64:
1098
                return o1.(int64) <= o2.(int64), nil
1099
        case uint:
1100
                return o1.(uint) <= o2.(uint), nil
1101
        case uint8:
1102
                return o1.(uint8) <= o2.(uint8), nil
1103
        case uint16:
1104
                return o1.(uint16) <= o2.(uint16), nil
1105
        case uint32:
1106
                return o1.(uint32) <= o2.(uint32), nil
1107
        case uint64:
1108
                return o1.(uint64) <= o2.(uint64), nil
1109
        case string:
1110
                return o1.(string) <= o2.(string), nil
1111
        case decimal.Decimal:
1112
                return o1.(decimal.Decimal).LessThanOrEqual(o2.(decimal.Decimal)), nil
1113
        default:
1114
                return false, fmt.Errorf("unsupport less or equal type '%s'", s)
1115
        }
1116
}
func LessAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

1048
func LessAnyE(left, right interface{}) (bool, error) {
1049
        o1, o2, err := ToBinOperandE(left, right)
1050
        if err != nil {
1051
                return false, err
1052
        }
1053
        switch s := o1.(type) {
1054
        case int:
1055
                return o1.(int) < o2.(int), nil
1056
        case int8:
1057
                return o1.(int8) < o2.(int8), nil
1058
        case int16:
1059
                return o1.(int16) < o2.(int16), nil
1060
        case int32:
1061
                return o1.(int32) < o2.(int32), nil
1062
        case int64:
1063
                return o1.(int64) < o2.(int64), nil
1064
        case uint:
1065
                return o1.(uint) < o2.(uint), nil
1066
        case uint8:
1067
                return o1.(uint8) < o2.(uint8), nil
1068
        case uint16:
1069
                return o1.(uint16) < o2.(uint16), nil
1070
        case uint32:
1071
                return o1.(uint32) < o2.(uint32), nil
1072
        case uint64:
1073
                return o1.(uint64) < o2.(uint64), nil
1074
        case string:
1075
                return o1.(string) < o2.(string), nil
1076
        case decimal.Decimal:
1077
                return o1.(decimal.Decimal).LessThan(o2.(decimal.Decimal)), nil
1078
        default:
1079
                return false, fmt.Errorf("unsupport less type '%s'", s)
1080
        }
1081
}
func GreaterOrEqualAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

1153
func GreaterOrEqualAnyE(left, right interface{}) (bool, error) {
1154
        o1, o2, err := ToBinOperandE(left, right)
1155
        if err != nil {
1156
                return false, err
1157
        }
1158
        switch s := o1.(type) {
1159
        case int:
1160
                return o1.(int) >= o2.(int), nil
1161
        case int8:
1162
                return o1.(int8) >= o2.(int8), nil
1163
        case int16:
1164
                return o1.(int16) >= o2.(int16), nil
1165
        case int32:
1166
                return o1.(int32) >= o2.(int32), nil
1167
        case int64:
1168
                return o1.(int64) >= o2.(int64), nil
1169
        case uint:
1170
                return o1.(uint) >= o2.(uint), nil
1171
        case uint8:
1172
                return o1.(uint8) >= o2.(uint8), nil
1173
        case uint16:
1174
                return o1.(uint16) >= o2.(uint16), nil
1175
        case uint32:
1176
                return o1.(uint32) >= o2.(uint32), nil
1177
        case uint64:
1178
                return o1.(uint64) >= o2.(uint64), nil
1179
        case string:
1180
                return o1.(string) >= o2.(string), nil
1181
        case decimal.Decimal:
1182
                return o1.(decimal.Decimal).GreaterThanOrEqual(o2.(decimal.Decimal)), nil
1183
        default:
1184
                return false, fmt.Errorf("unsupport greater or equal type '%s'", s)
1185
        }
1186
}
func BitClearAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

935
func BitClearAnyE(left, right interface{}) (interface{}, error) {
936
        o1, o2, err := ToBinOperandE(left, right)
937
        if err != nil {
938
                return nil, err
939
        }
940
        switch s := o1.(type) {
941
        case int:
942
                return o1.(int) &^ o2.(int), nil
943
        case int8:
944
                return o1.(int8) &^ o2.(int8), nil
945
        case int16:
946
                return o1.(int16) &^ o2.(int16), nil
947
        case int32:
948
                return o1.(int32) &^ o2.(int32), nil
949
        case int64:
950
                return o1.(int64) &^ o2.(int64), nil
951
        case uint:
952
                return o1.(uint) &^ o2.(uint), nil
953
        case uint8:
954
                return o1.(uint8) &^ o2.(uint8), nil
955
        case uint16:
956
                return o1.(uint16) &^ o2.(uint16), nil
957
        case uint32:
958
                return o1.(uint32) &^ o2.(uint32), nil
959
        case uint64:
960
                return o1.(uint64) &^ o2.(uint64), nil
961
        default:
962
                return nil, fmt.Errorf("unsupport bit clear type '%s'", s)
963
        }
964
}
func LeftShiftAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

873
func LeftShiftAnyE(left, right interface{}) (interface{}, error) {
874
        o1, o2, err := ToBinOperandE(left, right)
875
        if err != nil {
876
                return nil, err
877
        }
878
        switch s := o1.(type) {
879
        case int:
880
                return o1.(int) << o2.(int), nil
881
        case int8:
882
                return o1.(int8) << o2.(int8), nil
883
        case int16:
884
                return o1.(int16) << o2.(int16), nil
885
        case int32:
886
                return o1.(int32) << o2.(int32), nil
887
        case int64:
888
                return o1.(int64) << o2.(int64), nil
889
        case uint:
890
                return o1.(uint) << o2.(uint), nil
891
        case uint8:
892
                return o1.(uint8) << o2.(uint8), nil
893
        case uint16:
894
                return o1.(uint16) << o2.(uint16), nil
895
        case uint32:
896
                return o1.(uint32) << o2.(uint32), nil
897
        case uint64:
898
                return o1.(uint64) << o2.(uint64), nil
899
        default:
900
                return nil, fmt.Errorf("unsupport left shift type '%s'", s)
901
        }
902
}
func RightShiftAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

904
func RightShiftAnyE(left, right interface{}) (interface{}, error) {
905
        o1, o2, err := ToBinOperandE(left, right)
906
        if err != nil {
907
                return nil, err
908
        }
909
        switch s := o1.(type) {
910
        case int:
911
                return o1.(int) >> o2.(int), nil
912
        case int8:
913
                return o1.(int8) >> o2.(int8), nil
914
        case int16:
915
                return o1.(int16) >> o2.(int16), nil
916
        case int32:
917
                return o1.(int32) >> o2.(int32), nil
918
        case int64:
919
                return o1.(int64) >> o2.(int64), nil
920
        case uint:
921
                return o1.(uint) >> o2.(uint), nil
922
        case uint8:
923
                return o1.(uint8) >> o2.(uint8), nil
924
        case uint16:
925
                return o1.(uint16) >> o2.(uint16), nil
926
        case uint32:
927
                return o1.(uint32) >> o2.(uint32), nil
928
        case uint64:
929
                return o1.(uint64) >> o2.(uint64), nil
930
        default:
931
                return nil, fmt.Errorf("unsupport right shift type '%s'", s)
932
        }
933
}
func ModAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

842
func ModAnyE(left, right interface{}) (interface{}, error) {
843
        o1, o2, err := ToBinOperandE(left, right)
844
        if err != nil {
845
                return nil, err
846
        }
847
        switch s := o1.(type) {
848
        case int:
849
                return o1.(int) % o2.(int), nil
850
        case int8:
851
                return o1.(int8) % o2.(int8), nil
852
        case int16:
853
                return o1.(int16) % o2.(int16), nil
854
        case int32:
855
                return o1.(int32) % o2.(int32), nil
856
        case int64:
857
                return o1.(int64) % o2.(int64), nil
858
        case uint:
859
                return o1.(uint) % o2.(uint), nil
860
        case uint8:
861
                return o1.(uint8) % o2.(uint8), nil
862
        case uint16:
863
                return o1.(uint16) % o2.(uint16), nil
864
        case uint32:
865
                return o1.(uint32) % o2.(uint32), nil
866
        case uint64:
867
                return o1.(uint64) % o2.(uint64), nil
868
        default:
869
                return nil, fmt.Errorf("unsupport mod type '%s'", s)
870
        }
871
}
func CaretAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

749
func CaretAnyE(left, right interface{}) (interface{}, error) {
750
        o1, o2, err := ToBinOperandE(left, right)
751
        if err != nil {
752
                return nil, err
753
        }
754
        switch s := o1.(type) {
755
        case int:
756
                return o1.(int) ^ o2.(int), nil
757
        case int8:
758
                return o1.(int8) ^ o2.(int8), nil
759
        case int16:
760
                return o1.(int16) ^ o2.(int16), nil
761
        case int32:
762
                return o1.(int32) ^ o2.(int32), nil
763
        case int64:
764
                return o1.(int64) ^ o2.(int64), nil
765
        case uint:
766
                return o1.(uint) ^ o2.(uint), nil
767
        case uint8:
768
                return o1.(uint8) ^ o2.(uint8), nil
769
        case uint16:
770
                return o1.(uint16) ^ o2.(uint16), nil
771
        case uint32:
772
                return o1.(uint32) ^ o2.(uint32), nil
773
        case uint64:
774
                return o1.(uint64) ^ o2.(uint64), nil
775
        default:
776
                return nil, fmt.Errorf("unsupport caret type '%s'", s)
777
        }
778
}
func OrAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

780
func OrAnyE(left, right interface{}) (interface{}, error) {
781
        o1, o2, err := ToBinOperandE(left, right)
782
        if err != nil {
783
                return nil, err
784
        }
785
        switch s := o1.(type) {
786
        case int:
787
                return o1.(int) | o2.(int), nil
788
        case int8:
789
                return o1.(int8) | o2.(int8), nil
790
        case int16:
791
                return o1.(int16) | o2.(int16), nil
792
        case int32:
793
                return o1.(int32) | o2.(int32), nil
794
        case int64:
795
                return o1.(int64) | o2.(int64), nil
796
        case uint:
797
                return o1.(uint) | o2.(uint), nil
798
        case uint8:
799
                return o1.(uint8) | o2.(uint8), nil
800
        case uint16:
801
                return o1.(uint16) | o2.(uint16), nil
802
        case uint32:
803
                return o1.(uint32) | o2.(uint32), nil
804
        case uint64:
805
                return o1.(uint64) | o2.(uint64), nil
806
        default:
807
                return nil, fmt.Errorf("unsupport or type '%s'", s)
808
        }
809
}
func AndAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

811
func AndAnyE(left, right interface{}) (interface{}, error) {
812
        o1, o2, err := ToBinOperandE(left, right)
813
        if err != nil {
814
                return nil, err
815
        }
816
        switch s := o1.(type) {
817
        case int:
818
                return o1.(int) & o2.(int), nil
819
        case int8:
820
                return o1.(int8) & o2.(int8), nil
821
        case int16:
822
                return o1.(int16) & o2.(int16), nil
823
        case int32:
824
                return o1.(int32) & o2.(int32), nil
825
        case int64:
826
                return o1.(int64) & o2.(int64), nil
827
        case uint:
828
                return o1.(uint) & o2.(uint), nil
829
        case uint8:
830
                return o1.(uint8) & o2.(uint8), nil
831
        case uint16:
832
                return o1.(uint16) & o2.(uint16), nil
833
        case uint32:
834
                return o1.(uint32) & o2.(uint32), nil
835
        case uint64:
836
                return o1.(uint64) & o2.(uint64), nil
837
        default:
838
                return nil, fmt.Errorf("unsupport and type '%s'", s)
839
        }
840
}
func UnaryCaretAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

1260
func UnaryCaretAnyE(v interface{}) (interface{}, error) {
1261
        v = Indirect(v)
1262
        switch s := v.(type) {
1263
        case int:
1264
                return ^v.(int), nil
1265
        case int8:
1266
                return ^v.(int8), nil
1267
        case int16:
1268
                return ^v.(int16), nil
1269
        case int32:
1270
                return ^v.(int32), nil
1271
        case int64:
1272
                return ^v.(int64), nil
1273
        case uint:
1274
                return ^v.(uint), nil
1275
        case uint8:
1276
                return ^v.(uint8), nil
1277
        case uint16:
1278
                return ^v.(uint16), nil
1279
        case uint32:
1280
                return ^v.(uint32), nil
1281
        case uint64:
1282
                return ^v.(uint64), nil
1283
        default:
1284
                return false, fmt.Errorf("unsupport unary caret type '%s'", s)
1285
        }
1286
}
func DivUint16E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

550
func DivUint16E(a, b uint16) (r uint16, err error) {
551
        r1, err := DivUint64E(uint64(a), uint64(b))
552
        if err != nil {
553
                return
554
        }
555
        r = uint16(r1)
556
        if uint64(r) != r1 {
557
                err = resultOverFlowError("uint16")
558
                return
559
        }
560
        return
561
}
func AddInt32E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

355
func AddInt32E(a, b int32) (r int32, err error) {
356
        r1, err := AddInt64E(int64(a), int64(b))
357
        if err != nil {
358
                return
359
        }
360
        r = int32(r1)
361
        if int64(r) != r1 {
362
                err = resultOverFlowError("int32")
363
                return
364
        }
365
        return
366
}
func MulUint32E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

589
func MulUint32E(a, b uint32) (r uint32, err error) {
590
        r1, err := DivUint64E(uint64(a), uint64(b))
591
        if err != nil {
592
                return
593
        }
594
        r = uint32(r1)
595
        if uint64(r) != r1 {
596
                err = resultOverFlowError("uint32")
597
                return
598
        }
599
        return
600
}
func SubUint32E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

576
func SubUint32E(a, b uint32) (r uint32, err error) {
577
        r1, err := SubUint64E(uint64(a), uint64(b))
578
        if err != nil {
579
                return
580
        }
581
        r = uint32(r1)
582
        if uint64(r) != r1 {
583
                err = resultOverFlowError("uint32")
584
                return
585
        }
586
        return
587
}
func AddUint32E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

563
func AddUint32E(a, b uint32) (r uint32, err error) {
564
        r1, err := AddUint64E(uint64(a), uint64(b))
565
        if err != nil {
566
                return
567
        }
568
        r = uint32(r1)
569
        if uint64(r) != r1 {
570
                err = resultOverFlowError("uint32")
571
                return
572
        }
573
        return
574
}
func MulUint16E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

537
func MulUint16E(a, b uint16) (r uint16, err error) {
538
        r1, err := MulUint64E(uint64(a), uint64(b))
539
        if err != nil {
540
                return
541
        }
542
        r = uint16(r1)
543
        if uint64(r) != r1 {
544
                err = resultOverFlowError("uint16")
545
                return
546
        }
547
        return
548
}
func SubUint16E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

524
func SubUint16E(a, b uint16) (r uint16, err error) {
525
        r1, err := SubUint64E(uint64(a), uint64(b))
526
        if err != nil {
527
                return
528
        }
529
        r = uint16(r1)
530
        if uint64(r) != r1 {
531
                err = resultOverFlowError("uint16")
532
                return
533
        }
534
        return
535
}
func AddUint16E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

511
func AddUint16E(a, b uint16) (r uint16, err error) {
512
        r1, err := AddUint64E(uint64(a), uint64(b))
513
        if err != nil {
514
                return
515
        }
516
        r = uint16(r1)
517
        if uint64(r) != r1 {
518
                err = resultOverFlowError("uint16")
519
                return
520
        }
521
        return
522
}
func DivUint8E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

498
func DivUint8E(a, b uint8) (r uint8, err error) {
499
        r1, err := DivUint64E(uint64(a), uint64(b))
500
        if err != nil {
501
                return
502
        }
503
        r = uint8(r1)
504
        if uint64(r) != r1 {
505
                err = resultOverFlowError("uint8")
506
                return
507
        }
508
        return
509
}
func MulUint8E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

485
func MulUint8E(a, b uint8) (r uint8, err error) {
486
        r1, err := MulUint64E(uint64(a), uint64(b))
487
        if err != nil {
488
                return
489
        }
490
        r = uint8(r1)
491
        if uint64(r) != r1 {
492
                err = resultOverFlowError("uint8")
493
                return
494
        }
495
        return
496
}
func SubUint8E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

472
func SubUint8E(a, b uint8) (r uint8, err error) {
473
        r1, err := SubUint64E(uint64(a), uint64(b))
474
        if err != nil {
475
                return
476
        }
477
        r = uint8(r1)
478
        if uint64(r) != r1 {
479
                err = resultOverFlowError("uint8")
480
                return
481
        }
482
        return
483
}
func AddUint8E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

459
func AddUint8E(a, b uint8) (r uint8, err error) {
460
        r1, err := AddUint64E(uint64(a), uint64(b))
461
        if err != nil {
462
                return
463
        }
464
        r = uint8(r1)
465
        if uint64(r) != r1 {
466
                err = resultOverFlowError("uint8")
467
                return
468
        }
469
        return
470
}
func DivUintE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

446
func DivUintE(a, b uint) (r uint, err error) {
447
        r1, err := DivUint64E(uint64(a), uint64(b))
448
        if err != nil {
449
                return
450
        }
451
        r = uint(r1)
452
        if uint64(r) != r1 {
453
                err = resultOverFlowError("uint")
454
                return
455
        }
456
        return
457
}
func SubIntE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

212
func SubIntE(a, b int) (r int, err error) {
213
        r1, err := SubInt64E(int64(a), int64(b))
214
        if err != nil {
215
                return
216
        }
217
        r = int(r1)
218
        if int64(r) != r1 {
219
                err = resultOverFlowError("int")
220
                return
221
        }
222
        return
223
}
func AddInt8E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

251
func AddInt8E(a, b int8) (r int8, err error) {
252
        r1, err := AddInt64E(int64(a), int64(b))
253
        if err != nil {
254
                return
255
        }
256
        r = int8(r1)
257
        if int64(r) != r1 {
258
                err = resultOverFlowError("int8")
259
                return
260
        }
261
        return
262
}
func MulInt8E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

277
func MulInt8E(a, b int8) (r int8, err error) {
278
        r1, err := MulInt64E(int64(a), int64(b))
279
        if err != nil {
280
                return
281
        }
282
        r = int8(r1)
283
        if int64(r) != r1 {
284
                err = resultOverFlowError("int8")
285
                return
286
        }
287
        return
288
}
func MulUintE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

433
func MulUintE(a, b uint) (r uint, err error) {
434
        r1, err := MulUint64E(uint64(a), uint64(b))
435
        if err != nil {
436
                return
437
        }
438
        r = uint(r1)
439
        if uint64(r) != r1 {
440
                err = resultOverFlowError("uint")
441
                return
442
        }
443
        return
444
}
func SubUintE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

420
func SubUintE(a, b uint) (r uint, err error) {
421
        r1, err := SubUint64E(uint64(a), uint64(b))
422
        if err != nil {
423
                return
424
        }
425
        r = uint(r1)
426
        if uint64(r) != r1 {
427
                err = resultOverFlowError("uint")
428
                return
429
        }
430
        return
431
}
func AddUintE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

407
func AddUintE(a, b uint) (r uint, err error) {
408
        r1, err := AddUint64E(uint64(a), uint64(b))
409
        if err != nil {
410
                return
411
        }
412
        r = uint(r1)
413
        if uint64(r) != r1 {
414
                err = resultOverFlowError("uint")
415
                return
416
        }
417
        return
418
}
func MulInt32E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

381
func MulInt32E(a, b int32) (r int32, err error) {
382
        r1, err := MulInt64E(int64(a), int64(b))
383
        if err != nil {
384
                return
385
        }
386
        r = int32(r1)
387
        if int64(r) != r1 {
388
                err = resultOverFlowError("int32")
389
                return
390
        }
391
        return
392
}
func SubInt32E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

368
func SubInt32E(a, b int32) (r int32, err error) {
369
        r1, err := SubInt64E(int64(a), int64(b))
370
        if err != nil {
371
                return
372
        }
373
        r = int32(r1)
374
        if int64(r) != r1 {
375
                err = resultOverFlowError("int32")
376
                return
377
        }
378
        return
379
}
func DivUint32E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

602
func DivUint32E(a, b uint32) (r uint32, err error) {
603
        r1, err := DivUint64E(uint64(a), uint64(b))
604
        if err != nil {
605
                return
606
        }
607
        r = uint32(r1)
608
        if uint64(r) != r1 {
609
                err = resultOverFlowError("uint32")
610
                return
611
        }
612
        return
613
}
func DivInt16E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

342
func DivInt16E(a, b int16) (r int16, err error) {
343
        r1, err := DivInt64E(int64(a), int64(b))
344
        if err != nil {
345
                return
346
        }
347
        r = int16(r1)
348
        if int64(r) != r1 {
349
                err = resultOverFlowError("int16")
350
                return
351
        }
352
        return
353
}
func SubInt16E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

316
func SubInt16E(a, b int16) (r int16, err error) {
317
        r1, err := SubInt64E(int64(a), int64(b))
318
        if err != nil {
319
                return
320
        }
321
        r = int16(r1)
322
        if int64(r) != r1 {
323
                err = resultOverFlowError("int16")
324
                return
325
        }
326
        return
327
}
func AddInt16E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

303
func AddInt16E(a, b int16) (r int16, err error) {
304
        r1, err := AddInt64E(int64(a), int64(b))
305
        if err != nil {
306
                return
307
        }
308
        r = int16(r1)
309
        if int64(r) != r1 {
310
                err = resultOverFlowError("int16")
311
                return
312
        }
313
        return
314
}
func DivInt8E
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

290
func DivInt8E(a, b int8) (r int8, err error) {
291
        r1, err := DivInt64E(int64(a), int64(b))
292
        if err != nil {
293
                return
294
        }
295
        r = int8(r1)
296
        if int64(r) != r1 {
297
                err = resultOverFlowError("int8")
298
                return
299
        }
300
        return
301
}
func LogicAndAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

1298
func LogicAndAnyE(left, right interface{}) (bool, error) {
1299
        a, err := ToBoolE(left)
1300
        if err != nil {
1301
                return false, err
1302
        }
1303
        b, err := ToBoolE(right)
1304
        if err != nil {
1305
                return false, err
1306
        }
1307
        return a && b, nil
1308
}
func LogicOrAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

1310
func LogicOrAnyE(left, right interface{}) (bool, error) {
1311
        a, err := ToBoolE(left)
1312
        if err != nil {
1313
                return false, err
1314
        }
1315
        b, err := ToBoolE(right)
1316
        if err != nil {
1317
                return false, err
1318
        }
1319
        return a || b, nil
1320
}
func BigDivUint64
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

63
func BigDivUint64(a, b uint64) *big.Int {
64
        r := big.NewInt(0)
65
        ba := &big.Int{}
66
        ba.SetUint64(a)
67
        bb := &big.Int{}
68
        bb.SetUint64(b)
69
        return r.Div(ba, bb)
70
}
func BigSubUint64
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

45
func BigSubUint64(a, b uint64) *big.Int {
46
        r := big.NewInt(0)
47
        ba := &big.Int{}
48
        ba.SetUint64(a)
49
        bb := &big.Int{}
50
        bb.SetUint64(b)
51
        return r.Sub(ba, bb)
52
}
func UnaryNotAnyE
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

1288
func UnaryNotAnyE(v interface{}) (interface{}, error) {
1289
        v = Indirect(v)
1290
        switch s := v.(type) {
1291
        case bool:
1292
                return !v.(bool), nil
1293
        default:
1294
                return false, fmt.Errorf("unsupport unary not type '%s'", s)
1295
        }
1296
}
func Value.Add
Back

In /Users/kun/gobatis/gobatis/cast/value.go:

9
func (p Value) Add(a Value) (err error) {
10
        
11
        switch p.Kind() {
12
        case reflect.Int8:
13
        
14
        }
15
        
16
        return
17
}
func jsonStringToObject
Back

In /Users/kun/gobatis/gobatis/cast/caste.go:

1383
func jsonStringToObject(s string, v interface{}) error {
1384
        data := []byte(s)
1385
        return json.Unmarshal(data, v)
1386
}
func BigDivInt64
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

31
func BigDivInt64(a, b int64) *big.Int {
32
        r := big.NewInt(0)
33
        return r.Div(big.NewInt(a), big.NewInt(b))
34
}
func MulFloat32
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

96
func MulFloat32(a, b float32) (r decimal.Decimal) {
97
        return decimal.NewFromFloat32(a).Mul(decimal.NewFromFloat32(b))
98
}
func SubFloat64
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

76
func SubFloat64(a, b float64) (r decimal.Decimal) {
77
        return decimal.NewFromFloat(a).Sub(decimal.NewFromFloat(b))
78
}
func AddFloat64
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

72
func AddFloat64(a, b float64) (r decimal.Decimal) {
73
        return decimal.NewFromFloat(a).Add(decimal.NewFromFloat(b))
74
}
func MulFloat64
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

80
func MulFloat64(a, b float64) (r decimal.Decimal) {
81
        return decimal.NewFromFloat(a).Mul(decimal.NewFromFloat(b))
82
}
func DivFloat64
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

84
func DivFloat64(a, b float64) (r decimal.Decimal) {
85
        return decimal.NewFromFloat(a).Div(decimal.NewFromFloat(b))
86
}
func AddFloat32
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

88
func AddFloat32(a, b float32) (r decimal.Decimal) {
89
        return decimal.NewFromFloat32(a).Add(decimal.NewFromFloat32(b))
90
}
func SubFloat32
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

92
func SubFloat32(a, b float32) (r decimal.Decimal) {
93
        return decimal.NewFromFloat32(a).Sub(decimal.NewFromFloat32(b))
94
}
func DivFloat32
Back

In /Users/kun/gobatis/gobatis/cast/calc.go:

100
func DivFloat32(a, b float32) (r decimal.Decimal) {
101
        return decimal.NewFromFloat32(a).Div(decimal.NewFromFloat32(b))
102
}
Package Overview: github.com/gobatis/gobatis/driver/postgres 93.3%

Please select a function to see what's left for testing.

Namer.TableName(...) github.com/gobatis/gobatis/driver/postgres/db.go 100.0% 4/4
Open(...) github.com/gobatis/gobatis/driver/postgres/db.go 100.0% 3/3
Namer.ColumnName(...) github.com/gobatis/gobatis/driver/postgres/db.go 100.0% 3/3
Dialector.Namer(...) github.com/gobatis/gobatis/driver/postgres/db.go 100.0% 1/1
Dialector.DB(...) github.com/gobatis/gobatis/driver/postgres/db.go 100.0% 1/1
Namer.ReservedName(...) github.com/gobatis/gobatis/driver/postgres/db.go 66.7% 2/3
func Namer.TableName
Back

In /Users/kun/gobatis/gobatis/driver/postgres/db.go:

39
func (n Namer) TableName(name string) string {
40
        items := strings.Split(name, ".")
41
        for i := range items {
42
                items[i] = n.ReservedName(items[i])
43
        }
44
        return strings.Join(items, ".")
45
}
func Open
Back

In /Users/kun/gobatis/gobatis/driver/postgres/db.go:

15
func Open(dsn string) *Dialector {
16
        d := &Dialector{}
17
        d.db, d.err = sql.Open("pgx", dsn)
18
        return d
19
}
func Namer.ColumnName
Back

In /Users/kun/gobatis/gobatis/driver/postgres/db.go:

54
func (n Namer) ColumnName(name string) string {
55
        var re = regexp.MustCompile(`([^A-Z_])([A-Z])`)
56
        snakeStr := re.ReplaceAllString(name, "${1}_${2}")
57
        return strings.ToLower(snakeStr)
58
}
func Dialector.Namer
Back

In /Users/kun/gobatis/gobatis/driver/postgres/db.go:

26
func (d Dialector) Namer() dialector.Namer {
27
        return &Namer{}
28
}
func Dialector.DB
Back

In /Users/kun/gobatis/gobatis/driver/postgres/db.go:

30
func (d Dialector) DB() (*sql.DB, error) {
31
        return d.db, d.err
32
}
func Namer.ReservedName
Back

In /Users/kun/gobatis/gobatis/driver/postgres/db.go:

47
func (n Namer) ReservedName(name string) string {
48
        if strings.HasPrefix(name, "\"") {
49
                return name
50
        }
51
        return fmt.Sprintf("\"%s\"", name)
52
}
Package Overview: github.com/gobatis/gobatis/dtd 0.0%

Please select a function to see what's left for testing.

MapperElement(...) github.com/gobatis/gobatis/dtd/match.go 0.0% 0/33
ConfigElement(...) github.com/gobatis/gobatis/dtd/match.go 0.0% 0/25
Element.HasNode(...) github.com/gobatis/gobatis/dtd/element.go 0.0% 0/4
Element.HasAttribute(...) github.com/gobatis/gobatis/dtd/element.go 0.0% 0/4
Element.AddNode(...) github.com/gobatis/gobatis/dtd/element.go 0.0% 0/3
Element.AddAttribute(...) github.com/gobatis/gobatis/dtd/element.go 0.0% 0/3
Element.GetNodeCount(...) github.com/gobatis/gobatis/dtd/element.go 0.0% 0/3
NewElement(...) github.com/gobatis/gobatis/dtd/element.go 0.0% 0/1
func MapperElement
Back

In /Users/kun/gobatis/gobatis/dtd/match.go:

57
func MapperElement(name string) (elem *Element, err error) {
58
        switch name {
59
        case MAPPER:
60
                elem = Mapper
61
        case CACHE_REF:
62
                elem = CacheRef
63
        case CACHE:
64
                elem = Cache
65
        case RESULT_MAP:
66
                elem = ResultMap
67
        case CONSTRUCTOR:
68
                elem = Constructor
69
        case ID:
70
                elem = Id
71
        case RESULT:
72
                elem = Result
73
        case ID_ARG:
74
                elem = IdArg
75
        case ARG:
76
                elem = Arg
77
        case COLLECTION:
78
                elem = Collection
79
        case ASSOCIATION:
80
                elem = Association
81
        case DISCRIMINATOR:
82
                elem = Discriminator
83
        case CASE:
84
                elem = Case
85
        case TYPE_ALIAS:
86
                elem = TypeAlias
87
        case SELECT:
88
                elem = Select
89
        case INSERT:
90
                elem = Insert
91
        case SELECT_KEY:
92
                elem = SelectKey
93
        case UPDATE:
94
                elem = Update
95
        case DELETE:
96
                elem = Delete
97
        case INCLUDE:
98
                elem = Include
99
        case BIND:
100
                elem = Bind
101
        case SQL:
102
                elem = Sql
103
        case TRIM:
104
                elem = Trim
105
        case WHERE:
106
                elem = Where
107
        case SET:
108
                elem = Set
109
        case FOREACH:
110
                elem = Foreach
111
        case CHOOSE:
112
                elem = Choose
113
        case WHEN:
114
                elem = When
115
        case OTHERWISE:
116
                elem = Otherwise
117
        case IF:
118
                elem = If
119
        default:
120
                err = fmt.Errorf("not match %s dtd element", name)
121
        }
122
123
        return
124
}
func ConfigElement
Back

In /Users/kun/gobatis/gobatis/dtd/match.go:

5
func ConfigElement(name string) (elem *Element, err error) {
6
        switch name {
7
        case MODULE:
8
                elem = Module
9
        case DATABASE_ID_PROVIDER:
10
                elem = DatabaseIdProvider
11
        case PROPERTIES:
12
                elem = Properties
13
        case PROPERTY:
14
                elem = Property
15
        case SETTINGS:
16
                elem = Settings
17
        case SETTING:
18
                elem = Setting
19
        case TYPE_ALIASES:
20
                elem = TypeAliases
21
        case TYPE_ALIAS:
22
                elem = ConfigTypeAlias
23
        case TYPE_HANDLERS:
24
                elem = TypeHandlers
25
        case TYPE_HANDLER:
26
                elem = TypeHandle
27
        case OBJECT_FACTORY:
28
                elem = ObjectFactory
29
        case OBJECT_WRAPPER_FACTORY:
30
                elem = ObjectWrapperFactory
31
        case REFLECT_FACTORY:
32
                elem = ReflectFactory
33
        case PLUGINS:
34
                elem = Plugins
35
        case PLUGIN:
36
                elem = Plugin
37
        case ENVIRONMENTS:
38
                elem = Environments
39
        case ENVIRONMENT:
40
                elem = Environment
41
        case TRANSACTION_MANAGER:
42
                elem = TransactionManager
43
        case DATA_SOURCE:
44
                elem = DataSource
45
        case MAPPERS:
46
                elem = Mappers
47
        case MAPPER:
48
                elem = ConfigMapper
49
        case PACKAGE:
50
                elem = Package
51
        default:
52
                err = fmt.Errorf("not match %s dtd element", name)
53
        }
54
        return
55
}
func Element.HasNode
Back

In /Users/kun/gobatis/gobatis/dtd/element.go:

31
func (p Element) HasNode(name string) bool {
32
        if p.Nodes == nil {
33
                return false
34
        }
35
        _, ok := p.Nodes[name]
36
        return ok
37
}
func Element.HasAttribute
Back

In /Users/kun/gobatis/gobatis/dtd/element.go:

46
func (p Element) HasAttribute(name string) bool {
47
        if p.Attributes == nil {
48
                return false
49
        }
50
        _, ok := p.Attributes[name]
51
        return ok
52
}
func Element.AddNode
Back

In /Users/kun/gobatis/gobatis/dtd/element.go:

13
func (p *Element) AddNode(node string, times int) {
14
        if p.Nodes == nil {
15
                p.Nodes = map[string]int{}
16
        }
17
        
18
        p.Nodes[node] = times
19
        
20
}
func Element.AddAttribute
Back

In /Users/kun/gobatis/gobatis/dtd/element.go:

22
func (p *Element) AddAttribute(attribute string, check int) {
23
        if p.Attributes == nil {
24
                p.Attributes = map[string]int{}
25
        }
26
        
27
        p.Attributes[attribute] = check
28
        
29
}
func Element.GetNodeCount
Back

In /Users/kun/gobatis/gobatis/dtd/element.go:

39
func (p Element) GetNodeCount(name string) int {
40
        if p.Nodes == nil {
41
                return 0
42
        }
43
        return p.Nodes[name]
44
}
func NewElement
Back

In /Users/kun/gobatis/gobatis/dtd/element.go:

3
func NewElement(name string) Element {
4
        return Element{Name: name}
5
}
Package Overview: github.com/gobatis/gobatis/executor 45.8%

Please select a function to see what's left for testing.

replaceIsolatedLessThanWithEntity(...) github.com/gobatis/gobatis/executor/utils.go 100.0% 17/17
reflectStruct(...) github.com/gobatis/gobatis/executor/utils.go 100.0% 13/13
walkXMLNodes(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 9/9
initExprParser(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 9/9
RowsVars(...) github.com/gobatis/gobatis/executor/utils.go 100.0% 6/6
newExprParser(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 5/5
@347:8(...) github.com/gobatis/gobatis/executor/executor.go 100.0% 5/5
newRowMap(...) github.com/gobatis/gobatis/executor/utils.go 100.0% 4/4
isNil(...) github.com/gobatis/gobatis/executor/utils.go 100.0% 4/4
RowsParams(...) github.com/gobatis/gobatis/executor/utils.go 100.0% 4/4
InsertBatch.Query(...) github.com/gobatis/gobatis/executor/executor.go 100.0% 4/4
builtin.is(...) github.com/gobatis/gobatis/executor/builtin.go 100.0% 4/4
xmlNode.AddNode(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 4/4
Extract(...) github.com/gobatis/gobatis/executor/utils.go 100.0% 4/4
reflectRow(...) github.com/gobatis/gobatis/executor/utils.go 100.0% 4/4
newParamParser(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 4/4
xmlNodeStack.Len(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 3/3
exprParams.set(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 3/3
RowColumns(...) github.com/gobatis/gobatis/executor/utils.go 100.0% 3/3
fragment.parseParams(...) github.com/gobatis/gobatis/executor/fragment.go 100.0% 3/3
exprParser.addVar(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 3/3
toSnakeCase(...) github.com/gobatis/gobatis/executor/utils.go 100.0% 3/3
fragment.parseBlocks(...) github.com/gobatis/gobatis/executor/fragment.go 100.0% 3/3
xmlParser.enterElement(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 3/3
xmlNodeStack.Push(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 3/3
Default.scan(...) github.com/gobatis/gobatis/executor/executor.go 100.0% 3/3
newXMLStack(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 3/3
RowParams(...) github.com/gobatis/gobatis/executor/utils.go 100.0% 3/3
RowVars(...) github.com/gobatis/gobatis/executor/utils.go 100.0% 3/3
newExprParams(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 3/3
init(...) github.com/gobatis/gobatis/executor/utils.go 100.0% 3/3
ParallelQuery.Execute(...) github.com/gobatis/gobatis/executor/executor.go 100.0% 2/2
@253:8(...) github.com/gobatis/gobatis/executor/executor.go 100.0% 2/2
coverage.add(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 2/2
newValueStack(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 2/2
@113:8(...) github.com/gobatis/gobatis/executor/fragment.go 100.0% 2/2
newParamsStack(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 2/2
xmlParser.ExitEveryRule(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 2/2
parserErrorStrategy.RecoverInline(...) github.com/gobatis/gobatis/executor/error.go 100.0% 2/2
parserErrorStrategy.Recover(...) github.com/gobatis/gobatis/executor/error.go 100.0% 2/2
_error.format(...) github.com/gobatis/gobatis/executor/error.go 100.0% 2/2
@1209:8(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 2/2
newErrorListener(...) github.com/gobatis/gobatis/executor/error.go 100.0% 1/1
newXMLNode(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 1/1
TrimColumns(...) github.com/gobatis/gobatis/executor/utils.go 100.0% 1/1
coverage.setTotal(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 1/1
init(...) github.com/gobatis/gobatis/executor/builtin.go 100.0% 1/1
valueStack.push(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 1/1
valueStack.len(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 1/1
NewDB(...) github.com/gobatis/gobatis/executor/db.go 100.0% 1/1
DB.TraceId(...) github.com/gobatis/gobatis/executor/db.go 100.0% 1/1
DB.IsTx(...) github.com/gobatis/gobatis/executor/db.go 100.0% 1/1
throw(...) github.com/gobatis/gobatis/executor/error.go 100.0% 1/1
exprParser.EnterOperand(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 1/1
coverage.len(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 1/1
exprParser.EnterExpressions(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 1/1
coverage.covered(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 1/1
exprParser.builtParams(...) github.com/gobatis/gobatis/executor/parser.go 100.0% 1/1
NewFetchQuery(...) github.com/gobatis/gobatis/executor/executor.go 100.0% 1/1
newParserErrorStrategy(...) github.com/gobatis/gobatis/executor/error.go 100.0% 1/1
scanner.RowsAffected(...) github.com/gobatis/gobatis/executor/scanner.go 100.0% 1/1
scanner.LastInsertId(...) github.com/gobatis/gobatis/executor/scanner.go 100.0% 1/1
@284:54(...) github.com/gobatis/gobatis/executor/executor.go 100.0% 1/1
logger.Debugf(...) github.com/gobatis/gobatis/executor/logger.go 100.0% 1/1
Tx.IsTx(...) github.com/gobatis/gobatis/executor/tx.go