summaryrefslogtreecommitdiff
path: root/mapr/selectcondition.go
diff options
context:
space:
mode:
Diffstat (limited to 'mapr/selectcondition.go')
-rw-r--r--mapr/selectcondition.go96
1 files changed, 0 insertions, 96 deletions
diff --git a/mapr/selectcondition.go b/mapr/selectcondition.go
deleted file mode 100644
index 1882b7e..0000000
--- a/mapr/selectcondition.go
+++ /dev/null
@@ -1,96 +0,0 @@
-package mapr
-
-import (
- "errors"
- "fmt"
- "strings"
-)
-
-// AggregateOperation is to specify the aggregate operation type.
-type AggregateOperation int
-
-// Aggregate operation types
-const (
- UndefAggregateOperation AggregateOperation = iota
- Count AggregateOperation = iota
- Sum AggregateOperation = iota
- Min AggregateOperation = iota
- Max AggregateOperation = iota
- Last AggregateOperation = iota
- Avg AggregateOperation = iota
- Len AggregateOperation = iota
-)
-
-// Represents a parsed "select" clause, used by mapr.Query.
-type selectCondition struct {
- Field string
- FieldStorage string
- Operation AggregateOperation
-}
-
-func (sc selectCondition) String() string {
- return fmt.Sprintf("selectCondition(Field:%s,FieldStorage:%s,Operation:%v)",
- sc.Field,
- sc.FieldStorage,
- sc.Operation)
-}
-
-func makeSelectConditions(tokens []token) ([]selectCondition, error) {
- var sel []selectCondition
-
- // Parse select aggregation, e.g. sum(foo)
- parse := func(token token) (selectCondition, error) {
- var sc selectCondition
- tokenStr := strings.ToLower(token.str)
-
- if !strings.Contains(tokenStr, "(") && !strings.Contains(tokenStr, ")") {
- sc.Field = tokenStr
- sc.FieldStorage = tokenStr
- sc.Operation = Last
- return sc, nil
- }
-
- a := strings.Split(tokenStr, "(")
- if len(a) != 2 {
- return sc, errors.New(invalidQuery + "Can't parse 'select' aggregation: " + token.str)
- }
- agg := a[0] // Aggregation, e.g. 'sum'
-
- b := strings.Split(a[1], ")")
- if len(b) != 2 {
- return sc, errors.New(invalidQuery + "Can't parse 'select' field name from aggregation: " + token.str)
- }
- sc.Field = b[0] // Field name, e.g. 'foo'
- sc.FieldStorage = tokenStr // e.g. 'sum(foo)'
-
- switch agg {
- case "count":
- sc.Operation = Count
- case "sum":
- sc.Operation = Sum
- case "min":
- sc.Operation = Min
- case "max":
- sc.Operation = Max
- case "last":
- sc.Operation = Last
- case "avg":
- sc.Operation = Avg
- case "len":
- sc.Operation = Len
- default:
- return sc, errors.New(invalidQuery + "Unknown aggregation in 'select' clause: " + agg)
- }
-
- return sc, nil
- }
-
- for _, token := range tokens {
- sc, err := parse(token)
- if err != nil {
- return nil, err
- }
- sel = append(sel, sc)
- }
- return sel, nil
-}