本文整理汇总了Golang中github.com/boltdb/bolt.Bucket.CreateBucketIfNotExists方法的典型用法代码示例。如果您正苦于以下问题:Golang Bucket.CreateBucketIfNotExists方法的具体用法?Golang Bucket.CreateBucketIfNotExists怎么用?Golang Bucket.CreateBucketIfNotExists使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/boltdb/bolt.Bucket
的用法示例。
在下文中一共展示了Bucket.CreateBucketIfNotExists方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Del
func (store *BoltStore) Del(uri string) error {
namespace, key := util.NamespaceKey(uri)
bucketkeys := util.PathFolders(namespace)
var bucket *bolt.Bucket = nil
var err error
e := store.db.Update(func(tx *bolt.Tx) error {
for _, bucketkey := range bucketkeys {
if bucket == nil {
bucket, err = tx.CreateBucketIfNotExists([]byte(bucketkey))
if err != nil {
return err
}
} else {
bucket, err = bucket.CreateBucketIfNotExists([]byte(bucketkey))
if err != nil {
return err
}
}
}
bucket.DeleteBucket([]byte(key))
bucket.Delete([]byte(key))
return nil
})
return e
}
示例2: dig
func (self *TX) dig(keys [][]byte, create bool) (buckets []*bolt.Bucket, err error) {
var bucket *bolt.Bucket
if create {
if bucket, err = self.tx.CreateBucketIfNotExists(keys[0]); err != nil {
return
}
} else {
if bucket = self.tx.Bucket(keys[0]); bucket == nil {
err = ErrNotFound
return
}
}
buckets = append(buckets, bucket)
for keys = keys[1:]; len(keys) > 0; keys = keys[1:] {
if create {
if bucket, err = bucket.CreateBucketIfNotExists(keys[0]); err != nil {
return
}
} else {
if bucket = bucket.Bucket(keys[0]); bucket == nil {
err = ErrNotFound
return
}
}
buckets = append(buckets, bucket)
}
return
}
示例3: Init
// Init initializes this component. It requires an amount and an interval in
// seconds to be present.
func (RateLimitFilter) Init(h Hook, params map[string]string, b *bolt.Bucket) error {
amount, ok := params["amount"]
if !ok {
return errors.New("amount is required")
}
if i, err := strconv.Atoi(amount); err != nil || i <= 0 {
return fmt.Errorf("amount must be a positive number > 0: %s", err)
}
interval, ok := params["interval"]
if !ok {
return errors.New("interval is required")
}
if i, err := strconv.Atoi(interval); err != nil || i <= 0 {
return fmt.Errorf("interval must be a positive number: %s", err)
}
if err := b.Put([]byte(fmt.Sprintf("%s-amount", h.ID)), []byte(amount)); err != nil {
return err
}
if err := b.Put([]byte(fmt.Sprintf("%s-interval", h.ID)), []byte(interval)); err != nil {
return err
}
_, err := b.CreateBucketIfNotExists([]byte("requests"))
return err
}
示例4: put
func (store *BoltStore) put(bucket *bolt.Bucket, key string, value interface{}) error {
var err error
if is_value_basic(value) {
if key == "" {
return fmt.Errorf("key is absent")
}
byts, err := store.coder.Encode(value)
if err != nil {
return err
}
return bucket.Put([]byte(key), byts)
}
if key != "" {
bucket, err = bucket.CreateBucketIfNotExists([]byte(key))
if err != nil {
return err
}
}
switch value_type_kind(value) {
case reflect.Slice:
vs := reflect.ValueOf(value)
for i := 0; i < vs.Len(); i++ {
if err := store.put(bucket, strconv.Itoa(i), vs.Index(i).Interface()); err != nil {
return err
}
}
return nil
case reflect.Map:
vs, err := cast.ToStringMapE(value)
if err != nil {
return err
}
for k, v := range vs {
if err := store.put(bucket, k, v); err != nil {
return err
}
}
return nil
case reflect.Struct:
vt := reflect.TypeOf(value)
vv := reflect.ValueOf(value)
for i := 0; i < vt.NumField(); i++ {
vfield := vt.Field(i)
if tag := vfield.Tag.Get("object"); tag != "" {
if err := store.put(bucket, tag, vv.Field(i).Interface()); err != nil {
return err
}
}
}
return nil
}
return fmt.Errorf("unsupport store value type")
}
示例5: Init
// Init initializes this component. It requires a secret to be present.
func (GithubValidator) Init(h Hook, params map[string]string, b *bolt.Bucket) error {
secret, ok := params["secret"]
if !ok {
return errors.New("secret is required")
}
if err := b.Put([]byte(fmt.Sprintf("%s-secret", h.ID)), []byte(secret)); err != nil {
return err
}
_, err := b.CreateBucketIfNotExists([]byte("deliveries"))
return err
}
示例6: Init
// Init initializes this component. It requires a Mailgun API key to be
// present.
func (MailgunValidator) Init(h Hook, params map[string]string, b *bolt.Bucket) error {
apikey, ok := params["apikey"]
if !ok {
return errors.New("apikey is required")
}
if err := b.Put([]byte(fmt.Sprintf("%s-apikey", h.ID)), []byte(apikey)); err != nil {
return err
}
_, err := b.CreateBucketIfNotExists([]byte("tokens"))
return err
}
示例7: CreateBucketIfNotExists
// CreateBucketIfNotExists creates the bucket below the current node if it doesn't
// already exist.
func (n *node) CreateBucketIfNotExists(tx *bolt.Tx, bucket string) (*bolt.Bucket, error) {
var b *bolt.Bucket
var err error
bucketNames := append(n.rootBucket, bucket)
for _, bucketName := range bucketNames {
if b != nil {
if b, err = b.CreateBucketIfNotExists([]byte(bucketName)); err != nil {
return nil, err
}
} else {
if b, err = tx.CreateBucketIfNotExists([]byte(bucketName)); err != nil {
return nil, err
}
}
}
return b, nil
}
示例8: Put
func (store *BoltStore) Put(uri string, value interface{}) error {
namespace, key := util.NamespaceKey(uri)
bucketkeys := util.PathFolders(namespace)
var bucket *bolt.Bucket = nil
var err error
e := store.db.Update(func(tx *bolt.Tx) error {
for _, bucketkey := range bucketkeys {
if bucket == nil {
bucket, err = tx.CreateBucketIfNotExists([]byte(bucketkey))
if err != nil {
return err
}
} else {
bucket, err = bucket.CreateBucketIfNotExists([]byte(bucketkey))
if err != nil {
return err
}
}
}
return store.put(bucket, key, value)
})
return e
}
示例9: importBucket
func importBucket(b *bolt.Bucket, children []*rawMessage) error {
// Decode each message into a key/value pair.
for _, child := range children {
// Bucket messages are handled recursively.
if child.Type == "bucket" {
// Create the bucket if it doesn't exist.
subbucket, err := b.CreateBucketIfNotExists(child.Key)
if err != nil {
return fmt.Errorf("create bucket: %s", err)
}
// Decode child messages.
var subchildren []*rawMessage
if err := json.Unmarshal(child.Value, &subchildren); err != nil {
return fmt.Errorf("decode children: %s", err)
}
// Import subbucket.
if err := importBucket(subbucket, subchildren); err != nil {
return fmt.Errorf("import bucket: %s", err)
}
continue
}
// Non-bucket values are decoded from base64.
var value []byte
if err := json.Unmarshal(child.Value, &value); err != nil {
return fmt.Errorf("decode value: %s", err)
}
// Insert key/value into bucket.
if err := b.Put(child.Key, value); err != nil {
return fmt.Errorf("put: %s", err)
}
}
return nil
}