building functions for storing and recalling data

This commit is contained in:
kayos 2021-05-07 21:18:06 -07:00
parent 9cca9814ae
commit 8fc26c5520

@ -1,15 +1,16 @@
package eros
import (
"github.com/prologic/bitcask"
"protomolecule/src/dust"
"encoding/json"
//"errors"
"github.com/prologic/bitcask"
)
var db *bitcask.Bitcask
// these values should be defined by config
var DataDir string = "./.eros-data"
// //
//
@ -21,19 +22,20 @@ var DataDir string = "./.eros-data"
// Services UUIDs (Services)
//
//this struct is to be marshalled into json before stored in bitcask
// this struct is to be marshalled into json before stored in bitcask
type Details struct {
LocalName string
LocalName string
Advertisement []byte
Services []string
Services []string
}
// we use this to nest the populated Details struct associated with the MAC
type Device struct {
MAC string
Info Details
MAC string
Info Details
}
// create the data directory if it does not exist; initialize bitcask in this directory
func Awaken() {
//log.Debug().Str("DataDir",DataDir).Msg("Initializing eros...")
db, err := bitcask.Open(DataDir)
@ -42,6 +44,45 @@ func Awaken() {
}
}
func Remember(mac string, adv []byte, services []string) {
// placeholder
// store device details into the database
func Remember(mac string, name string, adv []byte, services []string) error {
var err error
details := Details{
LocalName: name,
Advertisement: adv,
Services: services,
}
device := Device{
MAC: mac,
Info: details,
}
var jsonData []byte
jsonData, err = json.Marshal(device)
if err != nil {
return err
}
err = db.Put([]byte(mac), jsonData)
return err
}
// retrieve device details from the database
func Recall(mac string) (Device, error) {
var err error
var bytes []byte
bytes, err = db.Get([]byte(mac))
if err != nil {
return err
}
var member Device
json.Unmarshal(bytes, &member)
return member, err
}