47 lines
924 B
Go
47 lines
924 B
Go
package storm
|
|
|
|
import (
|
|
"github.com/boltdb/bolt"
|
|
)
|
|
|
|
// Set a key/value pair into a bucket
|
|
func (n *Node) Set(bucketName string, key interface{}, value interface{}) error {
|
|
if key == nil {
|
|
return ErrNilParam
|
|
}
|
|
|
|
id, err := toBytes(key, n.s.Codec)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var data []byte
|
|
if value != nil {
|
|
data, err = n.s.Codec.Encode(value)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
if n.tx != nil {
|
|
return n.set(n.tx, bucketName, id, data)
|
|
}
|
|
|
|
return n.s.Bolt.Update(func(tx *bolt.Tx) error {
|
|
return n.set(tx, bucketName, id, data)
|
|
})
|
|
}
|
|
|
|
func (n *Node) set(tx *bolt.Tx, bucketName string, id, data []byte) error {
|
|
bucket, err := n.CreateBucketIfNotExists(tx, bucketName)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return bucket.Put(id, data)
|
|
}
|
|
|
|
// Set a key/value pair into a bucket
|
|
func (s *DB) Set(bucketName string, key interface{}, value interface{}) error {
|
|
return s.root.Set(bucketName, key, value)
|
|
}
|