1
0
Fork 0
mirror of https://git.sr.ht/~ashkeel/strimertul synced 2024-09-18 01:50:50 +00:00

Add some util methods to database

This commit is contained in:
Ash Keel 2021-05-15 16:28:33 +02:00
parent 5aedebffe3
commit f9a222e8b8
No known key found for this signature in database
GPG key ID: CF2CC050478BD7E5

View file

@ -42,7 +42,7 @@ func (db *DB) Client() *badger.DB {
} }
func (db *DB) Close() { func (db *DB) Close() {
db.Close() db.client.Close()
} }
func (db *DB) GetKey(key string) ([]byte, error) { func (db *DB) GetKey(key string) ([]byte, error) {
@ -98,6 +98,26 @@ func (db *DB) GetJSON(key string, dst interface{}) error {
}) })
} }
func (db *DB) GetAll(prefix string) (map[string]string, error) {
out := make(map[string]string)
err := db.client.View(func(t *badger.Txn) error {
it := t.NewIterator(badger.IteratorOptions{
Prefix: []byte(prefix),
})
defer it.Close()
for it.Rewind(); it.Valid(); it.Next() {
item := it.Item()
byt, err := item.ValueCopy(nil)
if err != nil {
return err
}
out[string(item.Key())] = string(byt)
}
return nil
})
return out, err
}
func (db *DB) PutJSON(key string, data interface{}) error { func (db *DB) PutJSON(key string, data interface{}) error {
return db.client.Update(func(t *badger.Txn) error { return db.client.Update(func(t *badger.Txn) error {
byt, err := json.Marshal(data) byt, err := json.Marshal(data)
@ -107,3 +127,19 @@ func (db *DB) PutJSON(key string, data interface{}) error {
return t.Set([]byte(key), byt) return t.Set([]byte(key), byt)
}) })
} }
func (db *DB) PutJSONBulk(kvs map[string]interface{}) error {
return db.client.Update(func(t *badger.Txn) error {
for k, v := range kvs {
byt, err := json.Marshal(v)
if err != nil {
return err
}
err = t.Set([]byte(k), byt)
if err != nil {
return err
}
}
return nil
})
}