-
Notifications
You must be signed in to change notification settings - Fork 0
/
util.go
59 lines (51 loc) · 1.13 KB
/
util.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
// Package database - Content managed by Project Forge, see [projectforge.md] for details.
package database
import (
"strings"
"unicode/utf8"
"github.com/jmoiron/sqlx"
"github.com/samber/lo"
"admini.dev/admini/app/util"
)
const (
localhost = "localhost"
cfgHost = "db_host"
cfgPort = "db_port"
cfgUser = "db_user"
cfgPassword = "db_password"
cfgDatabase = "db_database"
cfgSchema = "db_schema"
cfgFile = "db_file"
cfgMaxConns = "db_max_connections"
cfgDebug = "db_debug"
)
func ArrayToString(a []string) string {
return "{" + strings.Join(a, ",") + "}"
}
func StringToArray(s string) []string {
split := strings.Split(strings.TrimPrefix(strings.TrimSuffix(s, "}"), "{"), ",")
ret := make([]string, 0)
lo.ForEach(split, func(x string, _ int) {
y := strings.TrimSpace(x)
if y != "" {
ret = append(ret, y)
}
})
return ret
}
func MapScan(row *sqlx.Rows) (util.ValueMap, error) {
x := util.ValueMap{}
err := row.MapScan(x)
if err != nil {
return nil, err
}
for k, v := range x {
switch t := v.(type) {
case []byte:
if utf8.Valid(t) {
x[k] = string(t)
}
}
}
return x, nil
}