38 lines
578 B
Go
38 lines
578 B
Go
package database
|
|
|
|
import (
|
|
"go.etcd.io/bbolt"
|
|
)
|
|
|
|
var (
|
|
firedBucket = []byte("fired")
|
|
unbanBucket = []byte("unban")
|
|
|
|
buckets = [][]byte{
|
|
firedBucket,
|
|
unbanBucket,
|
|
}
|
|
)
|
|
|
|
type Database struct {
|
|
db *bbolt.DB
|
|
}
|
|
|
|
func Load(dbPath string) (*Database, error) {
|
|
db, err := bbolt.Open(dbPath, 0600, bbolt.DefaultOptions)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
for _, b := range buckets {
|
|
if err := db.Update(func(tx *bbolt.Tx) error {
|
|
_, err := tx.CreateBucketIfNotExists(b)
|
|
return err
|
|
}); err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
return &Database{
|
|
db: db,
|
|
}, nil
|
|
}
|