Files
go-heartwood/boltdb.go

49 lines
974 B
Go

package heartwood
import (
"github.com/boltdb/bolt"
)
const BucketName string = "events"
type EventBlob struct {
ID []byte
JSON []byte
}
func SetupBoltDB(boltdb *bolt.DB) error {
return boltdb.Update(func(tx *bolt.Tx) error {
_, err := tx.CreateBucketIfNotExists([]byte(BucketName))
return err
})
}
func BatchCheckEventsExist(boltdb *bolt.DB, eventIDs []string) map[string]bool {
existsMap := make(map[string]bool)
_ = boltdb.View(func(tx *bolt.Tx) error {
bucket := tx.Bucket([]byte(BucketName))
if bucket == nil {
return nil
}
for _, id := range eventIDs {
existsMap[id] = bucket.Get([]byte(id)) != nil
}
return nil
})
return existsMap
}
func BatchWriteEvents(boltdb *bolt.DB, events []EventBlob) error {
return boltdb.Update(func(tx *bolt.Tx) error {
bucket := tx.Bucket([]byte(BucketName))
for _, event := range events {
if err := bucket.Put(event.ID, event.JSON); err != nil {
return err
}
}
return nil
})
}