From 42fa773b52b6462dcc095de6e77631cea17459f3 Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Sat, 9 Mar 2024 07:15:54 -0500 Subject: [PATCH] refactor: allow nested buckets --- db/bboltdb.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/db/bboltdb.go b/db/bboltdb.go index 3b6a3ae..bd4cfe7 100644 --- a/db/bboltdb.go +++ b/db/bboltdb.go @@ -24,12 +24,23 @@ func (b *BboltDBKVStore) Open() error { b.db = db } - if b.bucket == nil && len(b.bucketName) > 0 { + if len(b.bucketName) > 0 { err := b.db.Update(func(txn *bbolt.Tx) error { - bucket, err := txn.CreateBucketIfNotExists([]byte(b.bucketName)) - if err != nil { - return err + var bucket *bbolt.Bucket + var err error + + if b.bucket == nil { + bucket, err = txn.CreateBucketIfNotExists([]byte(b.bucketName)) + if err != nil { + return err + } + } else { + bucket, err = b.bucket.CreateBucketIfNotExists([]byte(b.bucketName)) + if err != nil { + return err + } } + b.bucket = bucket return nil }) @@ -108,6 +119,7 @@ func (b *BboltDBKVStore) Delete(key []byte) error { func (b *BboltDBKVStore) Bucket(prefix string) (KVStore, error) { return &BboltDBKVStore{ db: b.db, + bucket: b.bucket, bucketName: prefix, root: false, }, nil