github.com/altipla-consulting/ravendb-go-client@v0.1.3/query_token.go (about)

     1  package ravendb
     2  
     3  import "strings"
     4  
     5  func isRqlTokenKeyword(s string) bool {
     6  	switch s {
     7  	case "as", "select", "where", "load",
     8  		"group", "order", "include":
     9  		return true
    10  	}
    11  	return false
    12  }
    13  
    14  // In Java QueryToken is a base class that defines virtual writeTo and provides
    15  // writeField. We make writeField a stand-alone helper function and make queryToken
    16  // an interface
    17  type queryToken interface {
    18  	writeTo(*strings.Builder) error
    19  }
    20  
    21  func writeQueryTokenField(writer *strings.Builder, field string) {
    22  	isKeyWord := isRqlTokenKeyword(field)
    23  	if isKeyWord {
    24  		writer.WriteString("'")
    25  		writer.WriteString(field)
    26  		writer.WriteString("'")
    27  		return
    28  	}
    29  
    30  	writer.WriteString(field)
    31  }
    32  
    33  type singleStringToken string
    34  
    35  func (t singleStringToken) writeTo(writer *strings.Builder) error {
    36  	writer.WriteString(string(t))
    37  	return nil
    38  }