Add StringListContains bucket func
This commit is contained in:
parent
58cd1cf257
commit
2ff40dcfdc
@ -79,7 +79,7 @@ func GetBucket(bkt *bolt.Bucket, path ...string) (*bolt.Bucket, error) {
|
||||
ret, err = bkt.CreateBucketIfNotExists([]byte(path[0]))
|
||||
if len(path) > 1 {
|
||||
for idx := 1; idx < len(path); idx++ {
|
||||
ret, err = bkt.CreateBucketIfNotExists([]byte(path[idx]))
|
||||
ret, err = ret.CreateBucketIfNotExists([]byte(path[idx]))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@ -102,6 +102,24 @@ func SetString(bkt *bolt.Bucket, key, val string) error {
|
||||
return bkt.Put([]byte(key), []byte(val))
|
||||
}
|
||||
|
||||
func GetUint64(bkt *bolt.Bucket, key string) (uint64, error) {
|
||||
if bkt == nil {
|
||||
return 0, fmt.Errorf("bucket must not be nil")
|
||||
}
|
||||
r, err := GetString(bkt, key)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return strconv.ParseUint(r, 10, 64)
|
||||
}
|
||||
|
||||
func SetUint64(bkt *bolt.Bucket, key string, val uint64) error {
|
||||
if bkt == nil {
|
||||
return fmt.Errorf("bucket must not be nil")
|
||||
}
|
||||
return SetString(bkt, key, strconv.FormatUint(val, 10))
|
||||
}
|
||||
|
||||
func GetInt(bkt *bolt.Bucket, key string) (int, error) {
|
||||
if bkt == nil {
|
||||
return 0, fmt.Errorf("bucket must not be nil")
|
||||
@ -252,7 +270,7 @@ func SetStringList(bkt *bolt.Bucket, val []string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func AddToStringList(bkt *bolt.Bucket, key string, values ...string) error {
|
||||
func AddToStringList(bkt *bolt.Bucket, values ...string) error {
|
||||
if bkt == nil {
|
||||
return fmt.Errorf("bucket must not be nil")
|
||||
}
|
||||
@ -271,6 +289,51 @@ func AddToStringList(bkt *bolt.Bucket, key string, values ...string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func AddToUniqueStringList(bkt *bolt.Bucket, values ...string) error {
|
||||
if bkt == nil {
|
||||
return fmt.Errorf("bucket must not be nil")
|
||||
}
|
||||
genseq := func(id uint64) []byte {
|
||||
bId := make([]byte, 8)
|
||||
binary.BigEndian.PutUint64(bId, id)
|
||||
return bId
|
||||
}
|
||||
currList, _ := GetStringList(bkt)
|
||||
var err error
|
||||
for _, v := range values {
|
||||
add := true
|
||||
for _, currV := range currList {
|
||||
if currV == v {
|
||||
add = false
|
||||
break
|
||||
}
|
||||
}
|
||||
if add {
|
||||
id, _ := bkt.NextSequence()
|
||||
if err = bkt.Put(genseq(id), []byte(v)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func StringListContains(bkt *bolt.Bucket, value string) (bool, error) {
|
||||
if bkt == nil {
|
||||
return false, fmt.Errorf("bucket must not be nil")
|
||||
}
|
||||
currList, err := GetStringList(bkt)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
for i := range currList {
|
||||
if currList[i] == value {
|
||||
return true, nil
|
||||
}
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
|
||||
func GetKeyValueMap(bkt *bolt.Bucket) (map[string][]byte, error) {
|
||||
ret := make(map[string][]byte)
|
||||
if bkt == nil {
|
||||
|
Loading…
Reference in New Issue
Block a user