🗃️ Added dbGetUsers method

This commit is contained in:
Maxim Lebedev 2017-12-27 21:11:19 +05:00
parent 4e4fd28372
commit 98f9d2d8d1
No known key found for this signature in database
GPG Key ID: F8978F46FF0FFA4F
1 changed files with 38 additions and 3 deletions

View File

@ -17,6 +17,9 @@ const (
stateReset = "reset"
setUploaded = "uploaded"
patternUsers = "users"
patternUserSets = "user_sets"
)
var db *buntdb.DB
@ -27,10 +30,18 @@ func dbInit() {
db, err = buntdb.Open("stickers.db")
errCheck(err)
log.Ln("Creating user_stickers index...")
log.Ln("Creating users index...")
err = db.CreateIndex(
"user_stickers", // name
"user:*:sticker:*", // pattern
patternUsers, // name
"user:*", // pattern
buntdb.IndexString, // options
)
errCheck(err)
log.Ln("Creating user_sets index...")
err = db.CreateIndex(
patternUserSets, // name
"user:*:set:*", // pattern
buntdb.IndexString, // options
)
errCheck(err)
@ -38,6 +49,30 @@ func dbInit() {
select {}
}
func dbGetUsers() ([]int, error) {
var users []int
err := db.View(func(tx *buntdb.Tx) error {
return tx.AscendKeys(
"user:*:state",
func(key, val string) bool {
log.Ln(key, "=", val)
subKeys := strings.Split(key, ":")
id, err := strconv.Atoi(subKeys[1])
if err == nil {
users = append(users, id)
}
return true
},
)
})
if err == buntdb.ErrNotFound {
return nil, nil
}
return users, err
}
func dbChangeUserState(userID int, state string) error {
log.Ln("Trying to change", userID, "state to", state)
return db.Update(func(tx *buntdb.Tx) error {