featurebase/dax/role.go
Matthew Jaffee e09a9dca47 first cut at removing all the shard/field/partition versioning
some cleanup needed

(cherry picked from commit bc9057f492)
2023-01-10 23:27:40 +00:00

57 lines
1.4 KiB
Go

package dax
// RoleType represents a role type which a worker node can act as.
type RoleType string
const (
RoleTypeCompute RoleType = "compute"
RoleTypeTranslate RoleType = "translate"
)
// RoleTypes is a list of RoleType, used primarily to introduce helper methods
// on the list.
type RoleTypes []RoleType
// Contains returns true if the given RoleType is in RoleTypes.
func (rt RoleTypes) Contains(t RoleType) bool {
for i := range rt {
if rt[i] == t {
return true
}
}
return false
}
// Role is an interface for any role which a worker node can assume.
type Role interface {
Type() RoleType
}
// Ensure type implements interface.
var _ Role = &ComputeRole{}
var _ Role = &TranslateRole{}
// ComputeRole is a role specific to compute nodes.
type ComputeRole struct {
TableKey TableKey `json:"table-key"`
Shards ShardNums `json:"shards"`
}
// Type returns the type for ComputeRole. This is mainly to impolement the Role
// interface.
func (cr *ComputeRole) Type() RoleType {
return RoleTypeCompute
}
// TranslateRole is a role specific to translate nodes.
type TranslateRole struct {
TableKey TableKey `json:"table-key"`
Partitions PartitionNums `json:"partitions"`
Fields []FieldName `json:"fields"`
}
// Type returns the type for TransteRole. This is mainly to impolement the Role
// interface.
func (cr *TranslateRole) Type() RoleType {
return RoleTypeTranslate
}