-
Notifications
You must be signed in to change notification settings - Fork 3
/
parse_view.go
29 lines (24 loc) · 925 Bytes
/
parse_view.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Copyright (C) 2019 Storj Labs, Inc.
// Copyright (C) 2017 Space Monkey, Inc.
// See LICENSE for copying information.
package syntax
import "storj.io/dbx/ast"
func parseView(node *tupleNode) (*ast.View, error) {
view := new(ast.View)
view.Pos = node.getPos()
err := node.consumeTokensNamedUntilList(tokenCases{
{Ident, "all"}: tokenFlagField("view", "all", &view.All),
{Ident, "paged"}: tokenFlagField("view", "paged", &view.Paged),
{Ident, "count"}: tokenFlagField("view", "count", &view.Count),
{Ident, "has"}: tokenFlagField("view", "has", &view.Has),
{Ident, "limitoffset"}: tokenFlagField("view", "limitoffset",
&view.LimitOffset),
{Ident, "scalar"}: tokenFlagField("view", "scalar", &view.Scalar),
{Ident, "one"}: tokenFlagField("view", "one", &view.One),
{Ident, "first"}: tokenFlagField("view", "first", &view.First),
})
if err != nil {
return nil, err
}
return view, nil
}