84 lines
2.4 KiB
Go
84 lines
2.4 KiB
Go
package protoboards
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"github.com/influxdata/chronograf"
|
|
)
|
|
|
|
//go:generate go-bindata -o bin_gen.go -ignore README|apps|.sh|go -pkg protoboards .
|
|
|
|
// BinProtoboardsStore represents a protoboards store using data generated by go-bindata
|
|
type BinProtoboardsStore struct {
|
|
Logger chronograf.Logger
|
|
}
|
|
|
|
// All returns the set of all protoboards
|
|
func (s *BinProtoboardsStore) All(ctx context.Context) ([]chronograf.Protoboard, error) {
|
|
names := AssetNames()
|
|
protoboards := make([]chronograf.Protoboard, len(names))
|
|
for i, name := range names {
|
|
octets, err := Asset(name)
|
|
if err != nil {
|
|
s.Logger.
|
|
WithField("component", "protoboards").
|
|
WithField("name", name).
|
|
Error("Invalid protoboard: ", err)
|
|
return nil, chronograf.ErrProtoboardInvalid
|
|
}
|
|
|
|
var protoboard chronograf.Protoboard
|
|
if err = json.Unmarshal(octets, &protoboard); err != nil {
|
|
s.Logger.
|
|
WithField("component", "protoboards").
|
|
WithField("name", name).
|
|
Error("Unable to read protoboard:", err)
|
|
return nil, chronograf.ErrProtoboardInvalid
|
|
}
|
|
protoboards[i] = protoboard
|
|
}
|
|
|
|
return protoboards, nil
|
|
}
|
|
|
|
// Add is not support by BinProtoboardsStore
|
|
func (s *BinProtoboardsStore) Add(ctx context.Context, protoboard chronograf.Protoboard) (chronograf.Protoboard, error) {
|
|
return chronograf.Protoboard{}, fmt.Errorf("Add to BinProtoboardsStore not supported")
|
|
}
|
|
|
|
// Delete is not support by BinProtoboardsStore
|
|
func (s *BinProtoboardsStore) Delete(ctx context.Context, protoboard chronograf.Protoboard) error {
|
|
return fmt.Errorf("Delete to BinProtoboardsStore not supported")
|
|
}
|
|
|
|
// Get retrieves protoboard if `ID` exists.
|
|
func (s *BinProtoboardsStore) Get(ctx context.Context, ID string) (chronograf.Protoboard, error) {
|
|
protoboards, err := s.All(ctx)
|
|
if err != nil {
|
|
s.Logger.
|
|
WithField("component", "protoboards").
|
|
WithField("name", ID).
|
|
Error("Invalid protoboard: ", err)
|
|
return chronograf.Protoboard{}, chronograf.ErrProtoboardInvalid
|
|
}
|
|
|
|
for _, protoboard := range protoboards {
|
|
if protoboard.ID == ID {
|
|
return protoboard, nil
|
|
}
|
|
}
|
|
|
|
s.Logger.
|
|
WithField("component", "protoboards").
|
|
WithField("name", ID).
|
|
Error("protoboard not found")
|
|
return chronograf.Protoboard{}, chronograf.ErrProtoboardNotFound
|
|
}
|
|
|
|
// Update not supported
|
|
func (s *BinProtoboardsStore) Update(ctx context.Context, protoboard chronograf.Protoboard) error {
|
|
return fmt.Errorf("Update to BinProtoboardsStore not supported")
|
|
}
|