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

     1  package ravendb
     2  
     3  import (
     4  	"time"
     5  )
     6  
     7  type IndexQuery struct {
     8  
     9  	// from IndexQueryBase<T>
    10  	pageSize                      int // if 0, not set
    11  	query                         string
    12  	queryParameters               Parameters
    13  	start                         int
    14  	waitForNonStaleResults        bool
    15  	waitForNonStaleResultsTimeout time.Duration
    16  
    17  	// from IndexQueryWithParameters
    18  	skipDuplicateChecking bool
    19  
    20  	// from IndexQuery
    21  	disableCaching bool
    22  }
    23  
    24  // from IndexQuery
    25  func NewIndexQuery(query string) *IndexQuery {
    26  	return &IndexQuery{
    27  		query:    query,
    28  		pageSize: 0,
    29  	}
    30  }
    31  
    32  // from IndexQueryBase<T>
    33  
    34  // TODO: only for tests? Could expose with build-tags only for testing
    35  func (q *IndexQuery) GetQuery() string {
    36  	return q.query
    37  }
    38  
    39  // TODO: only for tests? Could expose with build-tags only for testing
    40  func (q *IndexQuery) GetQueryParameters() Parameters {
    41  	return q.queryParameters
    42  }
    43  
    44  func (q *IndexQuery) GetQueryHash() string {
    45  	hasher := &HashCalculator{}
    46  	hasher.write(q.query)
    47  	hasher.write(q.waitForNonStaleResults)
    48  	hasher.write(q.skipDuplicateChecking)
    49  	//TBD 4.1 hasher.write(isShowTimings());
    50  	//TBD 4.1 hasher.write(isExplainScores());
    51  	n := int64(q.waitForNonStaleResultsTimeout)
    52  	hasher.write(n)
    53  	hasher.write(q.start)
    54  	hasher.write(q.pageSize)
    55  	hasher.write(q.queryParameters)
    56  	return hasher.getHash()
    57  }
    58  
    59  func (q *IndexQuery) String() string {
    60  	return q.query
    61  }