Skip to content

Commit

Permalink
fixed the EvaluateGroup object to match what the api expects, fixed…
Browse files Browse the repository at this point in the history
… an issue with the `EvaluateRequest` builder, renamed a type.
  • Loading branch information
magnusgohn committed Jan 29, 2024
1 parent 6f10f57 commit a1facc5
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 46 deletions.
8 changes: 4 additions & 4 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -267,31 +267,31 @@ func (ns ClarifyNamespace) Evaluate(data fields.DataQuery) EvaluateRequest {
}

func (er EvaluateRequest) Items(items ...fields.EvaluateItem) EvaluateRequest {
newItems := make([]fields.EvaluateItem, len(er.items)+len(items))
newItems := make([]fields.EvaluateItem, 0, len(er.items)+len(items))
newItems = append(append(newItems, er.items...), items...)
er.items = newItems

return er
}

func (er EvaluateRequest) Groups(groups ...fields.EvaluateGroup) EvaluateRequest {
newGroups := make([]fields.EvaluateGroup, len(er.groups)+len(groups))
newGroups := make([]fields.EvaluateGroup, 0, len(er.groups)+len(groups))
newGroups = append(append(newGroups, er.groups...), groups...)
er.groups = newGroups

return er
}

func (er EvaluateRequest) Calculations(calculations ...fields.Calculation) EvaluateRequest {
newCalculations := make([]fields.Calculation, len(er.calculations)+len(calculations))
newCalculations := make([]fields.Calculation, 0, len(er.calculations)+len(calculations))
newCalculations = append(append(newCalculations, er.calculations...), calculations...)
er.calculations = newCalculations

return er
}

func (er EvaluateRequest) Include(relationships ...string) EvaluateRequest {
newRelationships := make([]string, len(er.relationships)+len(relationships))
newRelationships := make([]string, 0, len(er.relationships)+len(relationships))
newRelationships = append(append(newRelationships, er.relationships...), relationships...)
er.relationships = newRelationships

Expand Down
10 changes: 7 additions & 3 deletions examples/evaluate/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ func main() {
t2 := time.Now().Add(24 * time.Hour)

query := fields.Query().
Where(fields.CompareField("annotations.clarify/clarify-go/example/name", fields.Equal("publish_signals"))).
Limit(1)
Where(fields.FilterAll()).
Limit(10)

data := fields.Data().
Where(fields.TimeRange(t1, t2)).
Expand All @@ -44,13 +44,17 @@ func main() {
{Alias: "i1", ID: selection.Data[0].ID, TimeAggregation: fields.TimeAggregationAvg},
}
calculations := []fields.Calculation{
{Alias: "c1", Formula: "sin(a)"},
{Alias: "c1", Formula: "sin(g1)"},
{Alias: "c2", Formula: "sin(2*PI*time_seconds/3600)"},
{Alias: "c3", Formula: "max(c1,c2)"},
}
groups := []fields.EvaluateGroup{
{Alias: "g1", Query: query, TimeAggregation: fields.TimeAggregationAvg, GroupAggregation: fields.GroupAggregationAvg},
}

result, err := client.Clarify().Evaluate(data).
Items(items...).
Groups(groups...).
Calculations(calculations...).
Do(ctx)
if err != nil {
Expand Down
81 changes: 42 additions & 39 deletions fields/evaluate.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import (
)

const (
TimeAggregationDefault TimeAggregationMethod = iota
TimeAggregationDefault TimeAggregation = iota
TimeAggregationCount
TimeAggregationMin
TimeAggregationMax
Expand All @@ -32,7 +32,7 @@ const (
TimeAggregationRate
)

type TimeAggregationMethod uint8
type TimeAggregation uint8

const (
GroupAggregationDefault GroupAggregation = iota
Expand All @@ -46,19 +46,19 @@ const (
type GroupAggregation uint8

var (
_ encoding.TextMarshaler = TimeAggregationMethod(0)
_ encoding.TextUnmarshaler = (*TimeAggregationMethod)(nil)
_ encoding.TextMarshaler = TimeAggregation(0)
_ encoding.TextUnmarshaler = (*TimeAggregation)(nil)
)

func (m TimeAggregationMethod) String() string {
func (m TimeAggregation) String() string {
b, err := m.MarshalText()
if err != nil {
return "%(INVALID)!"
}
return string(b)
}

func (m TimeAggregationMethod) MarshalText() ([]byte, error) {
func (m TimeAggregation) MarshalText() ([]byte, error) {
switch m {
case TimeAggregationDefault:
return nil, nil
Expand All @@ -82,7 +82,7 @@ func (m TimeAggregationMethod) MarshalText() ([]byte, error) {
return nil, fmt.Errorf("bad aggregation method")
}

func (m *TimeAggregationMethod) UnmarshalText(data []byte) error {
func (m *TimeAggregation) UnmarshalText(data []byte) error {
switch string(data) {
case "":
*m = TimeAggregationDefault
Expand Down Expand Up @@ -147,60 +147,63 @@ func (m *GroupAggregation) UnmarshalText(data []byte) error {
}

type EvaluateItem struct {
Alias string `json:"alias,omitempty"`
ID string `json:"id,omitempty"`
TimeAggregation TimeAggregationMethod `json:"timeAggregation,omitempty"`
State int `json:"state"`
Lead int `json:"lead,omitempty"`
Lag int `json:"lag,omitempty"`
Alias string `json:"alias,omitempty"`
ID string `json:"id,omitempty"`
TimeAggregation TimeAggregation `json:"timeAggregation,omitempty"`
State int `json:"state"`
Lead int `json:"lead,omitempty"`
Lag int `json:"lag,omitempty"`
}

type EvaluateGroup struct {
Alias string `json:"alias,omitempty"`
ID string `json:"id,omitempty"`
TimeAggregation TimeAggregationMethod `json:"timeAggregation,omitempty"`
GroupAggregation GroupAggregation `json:"groupAggregation,omitempty"`
State int `json:"state"`
Lead int `json:"lead,omitempty"`
Lag int `json:"lag,omitempty"`
Alias string `json:"alias,omitempty"`
Query ResourceQuery `json:"query,omitempty"`
TimeAggregation TimeAggregation `json:"timeAggregation,omitempty"`
GroupAggregation GroupAggregation `json:"groupAggregation,omitempty"`
State int `json:"state"`
Lead int `json:"lead,omitempty"`
Lag int `json:"lag,omitempty"`
}

var _ json.Marshaler = EvaluateItem{}

func (ia EvaluateItem) MarshalJSON() ([]byte, error) {
func (ei EvaluateItem) MarshalJSON() ([]byte, error) {
var v any
switch ia.TimeAggregation {
switch ei.TimeAggregation {
case TimeAggregationSeconds, TimeAggregationPercent, TimeAggregationRate:
type encType EvaluateItem
v = encType(ia)

v = encType(ei)
default:
type encType struct {
Alias string `json:"alias,omitempty"`
ID string `json:"id,omitempty"`
TimeAggregation TimeAggregationMethod `json:"aggregation,omitempty"`
State int `json:"-"`
Lead int `json:"lead,omitempty"`
Lag int `json:"lag,omitempty"`
Alias string `json:"alias,omitempty"`
ID string `json:"id,omitempty"`
TimeAggregation TimeAggregation `json:"timeAggregation,omitempty"`
State int `json:"-"`
Lead int `json:"lead,omitempty"`
Lag int `json:"lag,omitempty"`
}
v = encType(ia)

v = encType(ei)
}

return json.Marshal(v)
}

func (ga EvaluateGroup) MarshalJSON() ([]byte, error) {
func (eg EvaluateGroup) MarshalJSON() ([]byte, error) {
var v any

type encType struct {
Alias string `json:"alias,omitempty"`
ID string `json:"id,omitempty"`
TimeAggregation TimeAggregationMethod `json:"aggregation,omitempty"`
GroupAggregation GroupAggregation `json:"groupAggregation,omitempty"`
State int `json:"-"`
Lead int `json:"lead,omitempty"`
Lag int `json:"lag,omitempty"`
Alias string `json:"alias,omitempty"`
Query ResourceQuery `json:"query,omitempty"`
TimeAggregation TimeAggregation `json:"timeAggregation,omitempty"`
GroupAggregation GroupAggregation `json:"groupAggregation,omitempty"`
State int `json:"-"`
Lead int `json:"lead,omitempty"`
Lag int `json:"lag,omitempty"`
}

v = encType(ga)
v = encType(eg)

return json.Marshal(v)
}
Expand Down

0 comments on commit a1facc5

Please sign in to comment.