repositorypackage
0.0.0-20241018190740-17d5e39af0b1
Repository: https://github.com/madman22/database.git
Documentation: pkg.go.dev
# README
database
A Madman's abstraction to badger database.
Abstration layer on top of badger. Provides nodes and other convenience methods.
Example Client Usage:
type inventoryDB struct {
db database.Database
macs database.Database
customers database.Database
}
type macData struct {
CustomerID string
DeviceID string
}
type invCustomerData struct {
Devices []string
}
func newInventoryDatabase(db database.Database) (*inventoryDB, error) {
if db == nil {
return nil, ErrorDatabaseNil
}
node, err := db.NewNode("Inventory")
if err != nil {
return nil, err
}
macs, err := node.NewNode("Macs")
if err != nil {
return nil, err
}
custs, err := node.NewNode("Customers")
if err != nil {
return nil, err
}
var cdb inventoryDB
cdb.db = node
cdb.macs = macs
cdb.customers = custs
return &cdb, nil
}
func (cdb *inventoryDB) ByMac(mac net.HardwareAddr) (device.Device, error) {
if cdb.macs == nil {
return device.Device{}, ErrorDatabaseNil
}
var data macData
if err := cdb.macs.Get(mac.String(), &data); err != nil {
return device.Device{}, errors.New("Mac not found " + mac.String() + ": " + err.Error())
}
if data.DeviceID == "" {
return device.Device{}, errors.New("Missing Device ID")
}
dev, err := cdb.ByID(data.DeviceID)
if err != nil {
return device.Device{}, errors.New("Bad Mac Lookup:" + mac.String() + " " + data.DeviceID + " " + data.CustomerID)
}
return dev, nil
}