forked from ravendb/ravendb-go-client
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathquery_token.go
38 lines (31 loc) · 824 Bytes
/
query_token.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
30
31
32
33
34
35
36
37
38
package ravendb
import "strings"
func isRqlTokenKeyword(s string) bool {
switch s {
case "as", "select", "where", "load",
"group", "order", "include":
return true
}
return false
}
// In Java QueryToken is a base class that defines virtual writeTo and provides
// writeField. We make writeField a stand-alone helper function and make queryToken
// an interface
type queryToken interface {
writeTo(*strings.Builder) error
}
func writeQueryTokenField(writer *strings.Builder, field string) {
isKeyWord := isRqlTokenKeyword(field)
if isKeyWord {
writer.WriteString("'")
writer.WriteString(field)
writer.WriteString("'")
return
}
writer.WriteString(field)
}
type singleStringToken string
func (t singleStringToken) writeTo(writer *strings.Builder) error {
writer.WriteString(string(t))
return nil
}