github.com/altipla-consulting/ravendb-go-client@v0.1.3/more_like_this_token.go (about) 1 package ravendb 2 3 import "strings" 4 5 var _ queryToken = &moreLikeThisToken{} 6 7 type moreLikeThisToken struct { 8 documentParameterName string 9 optionsParameterName string 10 whereTokens []queryToken 11 } 12 13 func newMoreLikeThisToken() *moreLikeThisToken { 14 return &moreLikeThisToken{} 15 } 16 17 func (t *moreLikeThisToken) writeTo(writer *strings.Builder) error { 18 writer.WriteString("moreLikeThis(") 19 20 if t.documentParameterName == "" { 21 var prevToken queryToken 22 for _, whereToken := range t.whereTokens { 23 documentQueryHelperAddSpaceIfNeeded(prevToken, whereToken, writer) 24 whereToken.writeTo(writer) 25 prevToken = whereToken 26 } 27 } else { 28 writer.WriteString("$") 29 writer.WriteString(t.documentParameterName) 30 } 31 32 if t.optionsParameterName == "" { 33 writer.WriteString(")") 34 return nil 35 } 36 37 writer.WriteString(", $") 38 writer.WriteString(t.optionsParameterName) 39 writer.WriteString(")") 40 41 return nil 42 }