/
util.go
80 lines (70 loc) · 1.79 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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package base
import (
"database/sql"
"log"
"github.com/Nv7-Github/Nv7Haven/eod/types"
"github.com/Nv7-Github/sevcord/v2"
"github.com/lib/pq"
)
func (b *Base) Error(ctx sevcord.Ctx, err error, config ...string) {
if err != nil {
ctx.Acknowledge()
if err == sql.ErrNoRows && len(config) >= 1 {
ctx.Respond(sevcord.NewMessage(config[0] + " " + types.RedCircle))
return
}
ctx.Respond(sevcord.NewMessage("").AddEmbed(
sevcord.NewEmbed().
Title("Error").
Color(15548997). // Red
Description("```" + err.Error() + "```"),
))
}
}
func (b *Base) IsPlayChannel(c sevcord.Ctx) bool {
// Check if play channel
var cnt bool
err := b.db.QueryRow(`SELECT $1=ANY(play) FROM config WHERE guild=$2`, c.Channel(), c.Guild()).Scan(&cnt)
if err != nil {
log.Println("Play channel error", err)
return false
}
return cnt
}
func (b *Base) PageLength(ctx sevcord.Ctx) int {
if b.IsPlayChannel(ctx) {
return 30
}
return 10
}
func (b *Base) NameMap(items []int, guild string) (map[int]string, error) {
var names []struct {
ID int `db:"id"`
Name string `db:"name"`
}
err := b.db.Select(&names, "SELECT id, name FROM elements WHERE id = ANY($1) AND guild=$2", pq.Array(items), guild)
if err != nil {
return nil, err
}
nameMap := make(map[int]string)
for _, v := range names {
nameMap[v.ID] = v.Name
}
return nameMap, nil
}
func (b *Base) GetNames(items []int, guild string) ([]string, error) {
m, err := b.NameMap(items, guild)
if err != nil {
return nil, err
}
names := make([]string, len(items))
for i, v := range items {
names[i] = m[v]
}
return names, nil
}
func (b *Base) GetName(guild string, elem int) (string, error) {
var name string
err := b.db.QueryRow("SELECT name FROM elements WHERE id=$1 AND guild=$2", elem, guild).Scan(&name)
return name, err
}