| @@ -1,18 +0,0 @@ | |||||
| package persistence | |||||
| import ( | |||||
| "log" | |||||
| "github.com/AFASystems/presence/internal/pkg/model" | |||||
| "github.com/boltdb/bolt" | |||||
| ) | |||||
| func CreateBucketIfNotExists(db *bolt.DB) { | |||||
| err := db.Update(func(tx *bolt.Tx) error { | |||||
| _, err := tx.CreateBucketIfNotExists(model.World) | |||||
| return err | |||||
| }) | |||||
| if err != nil { | |||||
| log.Fatal(err) | |||||
| } | |||||
| } | |||||
| @@ -1,39 +0,0 @@ | |||||
| package persistence | |||||
| import ( | |||||
| "bytes" | |||||
| "encoding/gob" | |||||
| "log" | |||||
| "github.com/AFASystems/presence/internal/pkg/model" | |||||
| "github.com/boltdb/bolt" | |||||
| ) | |||||
| func LoadState(db *bolt.DB, ctx *model.AppContext) { | |||||
| err := db.View(func(tx *bolt.Tx) error { | |||||
| bucket := tx.Bucket(model.World) | |||||
| if bucket == nil { | |||||
| return nil | |||||
| } | |||||
| decode := func(key string, dest interface{}) { | |||||
| val := bucket.Get([]byte(key)) | |||||
| if val == nil { | |||||
| return | |||||
| } | |||||
| buf := bytes.NewBuffer(val) | |||||
| if err := gob.NewDecoder(buf).Decode(dest); err != nil { | |||||
| log.Fatal("decode error: ", err) | |||||
| } | |||||
| } | |||||
| decode("beaconsList", &ctx.Beacons.Beacons) | |||||
| decode("buttonsList", &ctx.ButtonsList) | |||||
| decode("settings", &ctx.Settings) | |||||
| return nil | |||||
| }) | |||||
| if err != nil { | |||||
| log.Fatal(err) | |||||
| } | |||||
| } | |||||
| @@ -1,50 +0,0 @@ | |||||
| package persistence | |||||
| import ( | |||||
| "bytes" | |||||
| "encoding/gob" | |||||
| "fmt" | |||||
| "github.com/AFASystems/presence/internal/pkg/model" | |||||
| "github.com/boltdb/bolt" | |||||
| ) | |||||
| func PersistBeacons(beacons *model.BeaconsList) error { | |||||
| buf := &bytes.Buffer{} | |||||
| enc := gob.NewEncoder(buf) | |||||
| if err := enc.Encode(beacons.Beacons); err != nil { | |||||
| fmt.Println("error in encoding: ", err) | |||||
| return err | |||||
| } | |||||
| key := []byte("beacons_list") | |||||
| err := model.Db.Update(func(tx *bolt.Tx) error { | |||||
| bucket, err := tx.CreateBucketIfNotExists(model.World) | |||||
| if err != nil { | |||||
| fmt.Println("error in creating a bucket") | |||||
| return err | |||||
| } | |||||
| return bucket.Put(key, buf.Bytes()) | |||||
| }) | |||||
| return err | |||||
| } | |||||
| func PersistSettings(settings *model.Settings) error { | |||||
| buf := &bytes.Buffer{} | |||||
| enc := gob.NewEncoder(buf) | |||||
| if err := enc.Encode(settings); err != nil { | |||||
| return err | |||||
| } | |||||
| key := []byte("settings") | |||||
| err := model.Db.Update(func(tx *bolt.Tx) error { | |||||
| bucket, err := tx.CreateBucketIfNotExists(model.World) | |||||
| if err != nil { | |||||
| return err | |||||
| } | |||||
| return bucket.Put(key, buf.Bytes()) | |||||
| }) | |||||
| return err | |||||
| } | |||||