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]))
|
ret, err = bkt.CreateBucketIfNotExists([]byte(path[0]))
|
||||||
if len(path) > 1 {
|
if len(path) > 1 {
|
||||||
for idx := 1; idx < len(path); idx++ {
|
for idx := 1; idx < len(path); idx++ {
|
||||||
ret, err = bkt.CreateBucketIfNotExists([]byte(path[idx]))
|
ret, err = ret.CreateBucketIfNotExists([]byte(path[idx]))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -102,6 +102,24 @@ func SetString(bkt *bolt.Bucket, key, val string) error {
|
|||||||
return bkt.Put([]byte(key), []byte(val))
|
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) {
|
func GetInt(bkt *bolt.Bucket, key string) (int, error) {
|
||||||
if bkt == nil {
|
if bkt == nil {
|
||||||
return 0, fmt.Errorf("bucket must not be nil")
|
return 0, fmt.Errorf("bucket must not be nil")
|
||||||
@ -252,7 +270,7 @@ func SetStringList(bkt *bolt.Bucket, val []string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func AddToStringList(bkt *bolt.Bucket, key string, values ...string) error {
|
func AddToStringList(bkt *bolt.Bucket, values ...string) error {
|
||||||
if bkt == nil {
|
if bkt == nil {
|
||||||
return fmt.Errorf("bucket must not be 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
|
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) {
|
func GetKeyValueMap(bkt *bolt.Bucket) (map[string][]byte, error) {
|
||||||
ret := make(map[string][]byte)
|
ret := make(map[string][]byte)
|
||||||
if bkt == nil {
|
if bkt == nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user