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  }