-
Notifications
You must be signed in to change notification settings - Fork 95
/
framework.go
49 lines (38 loc) · 1.05 KB
/
framework.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package store
import (
"github.com/Dataman-Cloud/swan/src/manager/raft/types"
"github.com/boltdb/bolt"
)
func withCreateFrameworkBucketIfNotExists(tx *bolt.Tx, fn func(bkt *bolt.Bucket) error) error {
bkt, err := createBucketIfNotExists(tx, bucketKeyStorageVersion, bucketKeyFramework)
if err != nil {
return err
}
return fn(bkt)
}
func WithFrameworkBucket(tx *bolt.Tx, fn func(bkt *bolt.Bucket) error) error {
bkt := GetFrameworkBucket(tx)
if bkt == nil {
return nil
}
return fn(bkt)
}
func GetFrameworkBucket(tx *bolt.Tx) *bolt.Bucket {
return getBucket(tx, bucketKeyStorageVersion, bucketKeyFramework)
}
func putFramework(tx *bolt.Tx, framework *types.Framework) error {
return withCreateFrameworkBucketIfNotExists(tx, func(bkt *bolt.Bucket) error {
p, err := framework.Marshal()
if err != nil {
return err
}
return bkt.Put(BucketKeyData, p)
})
}
func removeFramework(tx *bolt.Tx) error {
storageBkt := getBucket(tx, bucketKeyStorageVersion)
if storageBkt == nil {
return nil
}
return storageBkt.DeleteBucket(bucketKeyFramework)
}