all repos

rss-tools @ 77475b6

get rss feed from sources that(i need and) dont provide one

rss-tools/app/bucket.go (view raw)

Oleksandr Smirnov Oleksandr Smirnov
olexsmir@gmail.com
init, 1 month ago
1
package app
2
3
import "go.etcd.io/bbolt"
4
5
type Bucket struct {
6
	db   *bbolt.DB
7
	name []byte
8
}
9
10
func (a *App) Bucket(name string) (*Bucket, error) {
11
	b := &Bucket{db: a.db, name: []byte(name)}
12
	return b, a.db.Update(func(tx *bbolt.Tx) error {
13
		_, err := tx.CreateBucketIfNotExists(b.name)
14
		return err
15
	})
16
}
17
18
func (b *Bucket) Get(key []byte) ([]byte, error) {
19
	var v []byte
20
	err := b.db.View(func(tx *bbolt.Tx) error {
21
		v = tx.Bucket(b.name).Get(key)
22
		return nil
23
	})
24
	return v, err
25
}
26
27
func (b *Bucket) Set(key, val []byte) error {
28
	return b.db.Update(func(tx *bbolt.Tx) error {
29
		return tx.Bucket(b.name).Put(key, val)
30
	})
31
}
32
33
func (b *Bucket) Delete(key []byte) error {
34
	return b.db.Update(func(tx *bbolt.Tx) error {
35
		return tx.Bucket(b.name).Delete(key)
36
	})
37
}
38
39
func (b *Bucket) ForEach(fn func(k, v []byte) error) error {
40
	return b.db.View(func(tx *bbolt.Tx) error {
41
		return tx.Bucket(b.name).ForEach(fn)
42
	})
43
}