dispatch/storage/storage.go

54 lines
911 B
Go
Raw Normal View History

package storage
import (
"encoding/binary"
"log"
2015-12-11 03:35:48 +00:00
"github.com/khlieng/dispatch/Godeps/_workspace/src/github.com/boltdb/bolt"
)
var (
2016-01-07 22:59:38 +00:00
Path directory
2016-01-04 18:33:28 +00:00
db *bolt.DB
bucketUsers = []byte("Users")
bucketServers = []byte("Servers")
bucketChannels = []byte("Channels")
bucketMessages = []byte("Messages")
)
2016-01-07 22:59:38 +00:00
func Initialize(dir string) {
Path = directory(dir)
}
func Open() {
2016-01-04 18:26:32 +00:00
var err error
db, err = bolt.Open(Path.Database(), 0600, nil)
if err != nil {
2016-01-04 18:26:32 +00:00
log.Fatal("Could not open database:", err)
}
db.Update(func(tx *bolt.Tx) error {
tx.CreateBucketIfNotExists(bucketUsers)
tx.CreateBucketIfNotExists(bucketServers)
tx.CreateBucketIfNotExists(bucketChannels)
return nil
})
}
func Close() {
db.Close()
}
func idToBytes(i uint64) []byte {
b := make([]byte, 8)
binary.BigEndian.PutUint64(b, i)
return b
}
func idFromBytes(b []byte) uint64 {
return binary.BigEndian.Uint64(b)
}