本文整理汇总了Golang中github.com/boltdb/bolt.Tx类的典型用法代码示例。如果您正苦于以下问题:Golang Tx类的具体用法?Golang Tx怎么用?Golang Tx使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Tx类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: addSentence
// Add a single sentence to the database
func (ns *Nonsentence) addSentence(tx *bolt.Tx, sentence string) error {
wordsBucket := tx.Bucket([]byte("words"))
startsBucket := tx.Bucket([]byte("starts"))
if (wordsBucket == nil) || (startsBucket == nil) {
return fmt.Errorf("Buckets not found")
}
// Split sentence on whitespace
var words = strings.Fields(sentence)
if len(words) < 3 {
// log.Printf("Ignoring small sentence: %v", sentence)
return nil
}
// Store words in wordsBucket
for i := 2; i < len(words); i++ {
if err := storeWords(wordsBucket, words[i-2], words[i-1], words[i]); err != nil {
return err
}
}
if err := storeWords(wordsBucket, words[len(words)-2], words[len(words)-1], ""); err != nil {
return err
}
// Store starts in startsBucket
key := []byte(words[0] + " " + words[1])
if err := startsBucket.Put(key, []byte{}); err != nil {
return err
}
return nil
}
开发者ID:GEPWNAGE,项目名称:Pipo,代码行数:34,代码来源:nonsentence.go
示例2: simulateGetHandler
// Retrieves a key from the database and verifies that it is what is expected.
func simulateGetHandler(tx *bolt.Tx, qdb *QuickDB) {
// Randomly retrieve an existing exist.
keys := qdb.Rand()
if len(keys) == 0 {
return
}
// Retrieve root bucket.
b := tx.Bucket(keys[0])
if b == nil {
panic(fmt.Sprintf("bucket[0] expected: %08x\n", trunc(keys[0], 4)))
}
// Drill into nested buckets.
for _, key := range keys[1 : len(keys)-1] {
b = b.Bucket(key)
if b == nil {
panic(fmt.Sprintf("bucket[n] expected: %v -> %v\n", keys, key))
}
}
// Verify key/value on the final bucket.
expected := qdb.Get(keys)
actual := b.Get(keys[len(keys)-1])
if !bytes.Equal(actual, expected) {
fmt.Println("=== EXPECTED ===")
fmt.Println(expected)
fmt.Println("=== ACTUAL ===")
fmt.Println(actual)
fmt.Println("=== END ===")
panic("value mismatch")
}
}
开发者ID:TrevorSStone,项目名称:bolt,代码行数:34,代码来源:simulation_test.go
示例3: Del
//Del deletes one key-value pair.
func Del(tx *bolt.Tx, bucket string, key []byte) error {
b := tx.Bucket([]byte(bucket))
if b == nil {
return errors.New("bucket not found " + bucket)
}
return b.Delete(key)
}
开发者ID:shingetsu-gou,项目名称:shingetsu-gou,代码行数:8,代码来源:db.go
示例4: EntrySave
func EntrySave(tx *bolt.Tx, entry DbEntry, key string) error {
godbc.Require(tx != nil)
godbc.Require(len(key) > 0)
// Access bucket
b := tx.Bucket([]byte(entry.BucketName()))
if b == nil {
err := errors.New("Unable to access db")
logger.Err(err)
return err
}
// Save device entry to db
buffer, err := entry.Marshal()
if err != nil {
logger.Err(err)
return err
}
// Save data using the id as the key
err = b.Put([]byte(key), buffer)
if err != nil {
logger.Err(err)
return err
}
return nil
}
开发者ID:Zandrr,项目名称:heketi,代码行数:28,代码来源:entry.go
示例5: saveRepository
// saveRepository saves a repository in the store.
func (s *Store) saveRepository(tx *bolt.Tx, r *internal.Repository) error {
buf, err := proto.Marshal(r)
if err != nil {
return err
}
return tx.Bucket([]byte("repositories")).Put([]byte(r.GetID()), buf)
}
开发者ID:boutros,项目名称:scuttlebutt,代码行数:8,代码来源:store.go
示例6: removeFileContract
// removeFileContract removes a file contract from the database.
func removeFileContract(tx *bolt.Tx, id types.FileContractID) {
// Delete the file contract entry.
fcBucket := tx.Bucket(FileContracts)
fcBytes := fcBucket.Get(id[:])
// Sanity check - should not be removing a file contract not in the db.
if build.DEBUG && fcBytes == nil {
panic("nil file contract")
}
err := fcBucket.Delete(id[:])
if build.DEBUG && err != nil {
panic(err)
}
// Delete the entry for the file contract's expiration. The portion of
// 'fcBytes' used to determine the expiration bucket id is the
// byte-representation of the file contract window end, which always
// appears at bytes 48-56.
expirationBucketID := append(prefixFCEX, fcBytes[48:56]...)
expirationBucket := tx.Bucket(expirationBucketID)
expirationBytes := expirationBucket.Get(id[:])
if expirationBytes == nil {
panic(errNilItem)
}
err = expirationBucket.Delete(id[:])
if build.DEBUG && err != nil {
panic(err)
}
}
开发者ID:zoutaiqi,项目名称:Sia,代码行数:29,代码来源:database.go
示例7: persistProvider
func (m *Manager) persistProvider(tx *bolt.Tx, id string) error {
// Note: This method does *not* include re-serializing per-volume state,
// because we assume that hasn't changed unless the change request
// for the volume came through us and was handled elsewhere already.
provider, ok := m.providers[id]
if !ok {
return tx.Bucket([]byte("providers")).DeleteBucket([]byte(id))
}
providersBucket, err := m.getProviderBucket(tx, id)
if err != nil {
return fmt.Errorf("could not persist provider info to boltdb: %s", err)
}
pspec := &volume.ProviderSpec{}
pspec.Kind = provider.Kind()
b, err := provider.MarshalGlobalState()
if err != nil {
return fmt.Errorf("failed to serialize provider info: %s", err)
}
pspec.Config = b
b, err = json.Marshal(pspec)
if err != nil {
return fmt.Errorf("failed to serialize provider info: %s", err)
}
err = providersBucket.Put([]byte("global"), b)
if err != nil {
return fmt.Errorf("could not persist provider info to boltdb: %s", err)
}
return nil
}
开发者ID:ably-forks,项目名称:flynn,代码行数:29,代码来源:manager.go
示例8: getReview
func getReview(tx *bolt.Tx, id int) (review.R, error) {
var (
revisions []review.Revision
review review.R
)
metaData, err := getMetaData(tx)
if err != nil {
return review, err
}
root := tx.Bucket(rootKey)
if root == nil {
return review, ErrNoDB
}
reviews := root.Bucket(reviewsKey)
if reviews == nil {
return review, ErrNoDB
}
reviewBkt, err := getReviewBucket(tx, id)
if err != nil {
return review, err
}
review.Summary = metaData.Summaries[strconv.Itoa(id)]
rev := reviewBkt.Get(revisionsKey)
dec := gob.NewDecoder(bytes.NewReader(rev))
if err := dec.Decode(&revisions); err != nil {
return review, err
}
review.Revisions = revisions
return review, nil
}
开发者ID:echlebek,项目名称:erickson,代码行数:32,代码来源:bolt.go
示例9: SetCounterparty
func SetCounterparty(tx *bolt.Tx, cpt *core.Counterparty) error {
b, err := json.Marshal(cpt)
if err != nil {
return err
}
err = tx.Bucket([]byte("Counterparties")).Put([]byte(cpt.Pubkey), b)
if err != nil {
return err
}
// Relations
b, err = json.Marshal(cpt.Judge)
if err != nil {
return err
}
err = tx.Bucket([]byte("Judges")).Put(cpt.Judge.Pubkey, b)
if err != nil {
return err
}
return nil
}
开发者ID:jtremback,项目名称:usc-peer,代码行数:25,代码来源:access.go
示例10: removeTriple
// removeTriple removes a triple from the indices. If the triple
// contains any terms unique to that triple, they will also be removed.
func (db *DB) removeTriple(tx *bolt.Tx, s, p, o uint32) error {
// TODO think about what to do if present in one index but
// not in another: maybe panic? Cause It's a bug that should be fixed.
indices := []struct {
k1 uint32
k2 uint32
v uint32
bk []byte
}{
{s, p, o, bucketSPO},
{o, s, p, bucketOSP},
{p, o, s, bucketPOS},
}
key := make([]byte, 8)
for _, i := range indices {
bkt := tx.Bucket(i.bk)
copy(key, u32tob(i.k1))
copy(key[4:], u32tob(i.k2))
bo := bkt.Get(key)
if bo == nil {
// TODO should never happen, return bug error?
return ErrNotFound
}
bitmap := roaring.NewBitmap()
_, err := bitmap.ReadFrom(bytes.NewReader(bo))
if err != nil {
return err
}
hasTriple := bitmap.CheckedRemove(i.v)
if !hasTriple {
// TODO should never happen, return bug error?
return ErrNotFound
}
// Remove from index if bitmap is empty
if bitmap.GetCardinality() == 0 {
err = bkt.Delete(key)
if err != nil {
return err
}
} else {
var b bytes.Buffer
_, err = bitmap.WriteTo(&b)
if err != nil {
return err
}
err = bkt.Put(key, b.Bytes())
if err != nil {
return err
}
}
}
//atomic.AddInt64(&db.numTr, -1)
return db.removeOrphanedTerms(tx, s, p, o)
}
开发者ID:boutros,项目名称:sopp,代码行数:62,代码来源:db.go
示例11: nav
//line nav.ego:1
func nav(w io.Writer, tx *bolt.Tx) error {
//line nav.ego:2
if _, err := fmt.Fprintf(w, "\n\n"); err != nil {
return err
}
//line nav.ego:4
if _, err := fmt.Fprintf(w, "\n"); err != nil {
return err
}
//line nav.ego:5
if _, err := fmt.Fprintf(w, "\n\n"); err != nil {
return err
}
//line nav.ego:6
if _, err := fmt.Fprintf(w, "<h1>"); err != nil {
return err
}
//line nav.ego:6
if _, err := fmt.Fprintf(w, "%v", filepath.Base(tx.DB().Path())); err != nil {
return err
}
//line nav.ego:6
if _, err := fmt.Fprintf(w, "</h1>\n"); err != nil {
return err
}
return nil
}
开发者ID:schollz,项目名称:boltd,代码行数:28,代码来源:ego.go
示例12: addTerm
func (db *DB) addTerm(tx *bolt.Tx, term rdf.Term) (id uint32, err error) {
bt := db.encode(term)
if id, err = db.getIDb(tx, bt); err == nil {
// Term is allready in database
return id, nil
} else if err != ErrNotFound {
// Some other IO error occured
return 0, err
}
// get a new ID
bkt := tx.Bucket(bucketTerms)
n, err := bkt.NextSequence()
if err != nil {
return 0, err
}
if n > MaxTerms {
return 0, ErrDBFull
}
id = uint32(n)
idb := u32tob(uint32(n))
// store term and index it
err = bkt.Put(idb, bt)
if err != nil {
return 0, err
}
bkt = tx.Bucket(bucketIdxTerms)
err = bkt.Put(bt, idb)
return id, err
}
开发者ID:boutros,项目名称:sopp,代码行数:33,代码来源:db.go
示例13: depersistMessage
func depersistMessage(tx *bolt.Tx, id int64) error {
content_bucket, err := tx.CreateBucketIfNotExists(MESSAGE_CONTENT_BUCKET)
if err != nil {
return err
}
return content_bucket.Delete(binaryId(id))
}
开发者ID:jeffjenkins,项目名称:dispatchd,代码行数:7,代码来源:msgstore.go
示例14: validSiacoins
// validSiacoins checks that the siacoin inputs and outputs are valid in the
// context of the current consensus set.
func validSiacoins(tx *bolt.Tx, t types.Transaction) error {
scoBucket := tx.Bucket(SiacoinOutputs)
var inputSum types.Currency
for _, sci := range t.SiacoinInputs {
// Check that the input spends an existing output.
scoBytes := scoBucket.Get(sci.ParentID[:])
if scoBytes == nil {
return errMissingSiacoinOutput
}
// Check that the unlock conditions match the required unlock hash.
var sco types.SiacoinOutput
err := encoding.Unmarshal(scoBytes, &sco)
if build.DEBUG && err != nil {
panic(err)
}
if sci.UnlockConditions.UnlockHash() != sco.UnlockHash {
return errWrongUnlockConditions
}
inputSum = inputSum.Add(sco.Value)
}
if inputSum.Cmp(t.SiacoinOutputSum()) != 0 {
return errSiacoinInputOutputMismatch
}
return nil
}
开发者ID:zoutaiqi,项目名称:Sia,代码行数:29,代码来源:validtransaction.go
示例15: addBlockMap
// addBlockMap adds a processed block to the block map.
func addBlockMap(tx *bolt.Tx, pb *processedBlock) {
id := pb.Block.ID()
err := tx.Bucket(BlockMap).Put(id[:], encoding.Marshal(*pb))
if build.DEBUG && err != nil {
panic(err)
}
}
开发者ID:zoutaiqi,项目名称:Sia,代码行数:8,代码来源:database.go
示例16: SetAccount
func SetAccount(tx *bolt.Tx, acct *core.Account) error {
b, err := json.Marshal(acct)
if err != nil {
return err
}
err = tx.Bucket([]byte("Accounts")).Put([]byte(acct.Pubkey), b)
if err != nil {
return err
}
// Relations
b, err = json.Marshal(acct.Judge)
if err != nil {
return err
}
err = tx.Bucket([]byte("Judges")).Put(acct.Judge.Pubkey, b)
if err != nil {
return err
}
return nil
}
开发者ID:jtremback,项目名称:usc-peer,代码行数:25,代码来源:access.go
示例17: addFileContract
// addFileContract adds a file contract to the database. An error is returned
// if the file contract is already in the database.
func addFileContract(tx *bolt.Tx, id types.FileContractID, fc types.FileContract) {
// Add the file contract to the database.
fcBucket := tx.Bucket(FileContracts)
// Sanity check - should not be adding a zero-payout file contract.
if build.DEBUG && fc.Payout.IsZero() {
panic("adding zero-payout file contract")
}
// Sanity check - should not be adding a file contract already in the db.
if build.DEBUG && fcBucket.Get(id[:]) != nil {
panic("repeat file contract")
}
err := fcBucket.Put(id[:], encoding.Marshal(fc))
if build.DEBUG && err != nil {
panic(err)
}
// Add an entry for when the file contract expires.
expirationBucketID := append(prefixFCEX, encoding.Marshal(fc.WindowEnd)...)
expirationBucket, err := tx.CreateBucketIfNotExists(expirationBucketID)
if build.DEBUG && err != nil {
panic(err)
}
err = expirationBucket.Put(id[:], []byte{})
if build.DEBUG && err != nil {
panic(err)
}
}
开发者ID:zoutaiqi,项目名称:Sia,代码行数:29,代码来源:database.go
示例18: SetChannel
func SetChannel(tx *bolt.Tx, ch *core.Channel) error {
b, err := json.Marshal(ch)
if err != nil {
return err
}
err = tx.Bucket(Channels).Put([]byte(ch.ChannelId), b)
if err != nil {
return err
}
// Relations
// Judge
err = SetJudge(tx, ch.Judge)
if err != nil {
return err
}
// Accounts
err = SetAccount(tx, ch.Accounts[0])
if err != nil {
return err
}
err = SetAccount(tx, ch.Accounts[1])
if err != nil {
return err
}
return nil
}
开发者ID:jtremback,项目名称:universal-state-channels,代码行数:33,代码来源:access.go
示例19: createDSCOBucket
// createDSCOBucket creates a bucket for the delayed siacoin outputs at the
// input height.
func createDSCOBucket(tx *bolt.Tx, bh types.BlockHeight) {
bucketID := append(prefixDSCO, encoding.Marshal(bh)...)
_, err := tx.CreateBucket(bucketID)
if build.DEBUG && err != nil {
panic(err)
}
}
开发者ID:zoutaiqi,项目名称:Sia,代码行数:9,代码来源:database.go
示例20: GetChannels
func GetChannels(tx *bolt.Tx) ([]*core.Channel, error) {
var err error
chs := []*core.Channel{}
err = tx.Bucket(Channels).ForEach(func(k, v []byte) error {
ch := &core.Channel{}
err = json.Unmarshal(v, ch)
if err != nil {
return err
}
err = PopulateChannel(tx, ch)
if err != nil {
return errors.New("error populating channel")
}
chs = append(chs, ch)
return nil
})
if err != nil {
return nil, errors.New("database error")
}
return chs, nil
}
开发者ID:jtremback,项目名称:universal-state-channels,代码行数:25,代码来源:access.go
注:本文中的github.com/boltdb/bolt.Tx类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论