-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathdatabase.go
91 lines (81 loc) · 1.59 KB
/
database.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package D
import (
"bytes"
"github.com/kokizzu/gotro/S"
)
type Record interface {
GetStr(string) string
GetFloat(string) float64
GetInt(string) int64
GetArr(string) []any
GetBool(string) bool
}
const REDIS = `Rd`
const SCYLLA = `Sc`
const POSTGRE = `Pg`
const DUMMY = `Du`
const ARANGO = `Ar`
const AEROSP = `As`
var Z func(string) string
var ZZ func(string) string
var ZJ func(string) string
var ZI func(int64) string
var ZLIKE func(string) string
var ZS func(string) string
var DEBUG bool
func init() {
Z = S.Z
ZZ = S.ZZ
ZJ = S.ZJJ
ZI = S.ZI
ZLIKE = S.ZLIKE
ZS = S.ZS
}
func WhereIn(vals []string) string {
len := len(vals) - 1
if len < 0 {
return ` IN ('')`
}
buf := bytes.Buffer{}
buf.WriteString(` IN (`)
for k, v := range vals {
buf.WriteString(S.Z(v))
if k < len { // write except the last one
buf.WriteRune(',')
}
}
buf.WriteString(`)`)
return buf.String()
}
func WhereInStrIds(ids []string) string {
len := len(ids) - 1
if len < 0 {
return ` IN ('0')` // make sure there are no zero-value id
}
buf := bytes.Buffer{}
buf.WriteString(` IN (`)
for k, v := range ids {
buf.WriteString(S.Z(v))
if k < len { // write except the last one
buf.WriteRune(',')
}
}
buf.WriteString(`)`)
return buf.String()
}
func WhereInIds(ids []int64) string {
len := len(ids) - 1
if len < 0 {
return ` IN ('0')` // make sure there are no zero-value id
}
buf := bytes.Buffer{}
buf.WriteString(` IN (`)
for k, v := range ids {
buf.WriteString(S.ZI(v))
if k < len { // write except the last one
buf.WriteRune(',')
}
}
buf.WriteString(`)`)
return buf.String()
}