featurebase/dax/node.go
2022-12-12 09:01:20 -08:00

45 lines
1,019 B
Go

package dax
import (
"context"
"fmt"
"github.com/featurebasedb/featurebase/v3/errors"
)
// Node is used in API requests, like RegisterNode (before being assigned
// roles).
type Node struct {
Address Address `json:"address"`
RoleTypes []RoleType `json:"role-types"`
}
// AssignedNode is used in API responses.
type AssignedNode struct {
Address Address `json:"address"`
Role Role `json:"role"`
}
// NodeService represents a service for managing Nodes.
type NodeService interface {
CreateNode(context.Context, Address, *Node) error
ReadNode(context.Context, Address) (*Node, error)
DeleteNode(context.Context, Address) error
Nodes(context.Context) ([]*Node, error)
}
////////////////////////////////////////////////////
// Errors
////////////////////////////////////////////////////
const (
ErrNodeDoesNotExist errors.Code = "NodeDoesNotExist"
)
func NewErrNodeDoesNotExist(addr Address) error {
return errors.New(
ErrNodeDoesNotExist,
fmt.Sprintf("node '%s' does not exist", addr),
)
}