github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/document_query_customization.go (about) 1 package ravendb 2 3 import "time" 4 5 // Note: in Java it's hidden behind IDocumentQueryCustomization 6 7 // DocumentQueryCustomization allows customizing query 8 type DocumentQueryCustomization struct { 9 query *abstractDocumentQuery 10 } 11 12 // GetQueryOperation returns raw query operation that will be sent to the server 13 func (d *DocumentQueryCustomization) GetQueryOperation() *queryOperation { 14 return d.query.queryOperation 15 } 16 17 // AddBeforeQueryExecutedListener allows you to modify index query before it's executed 18 func (d *DocumentQueryCustomization) AddBeforeQueryExecutedListener(action func(*IndexQuery)) int { 19 return d.query.addBeforeQueryExecutedListener(action) 20 } 21 22 // RemoveBeforeQueryExecutedListener removes listener added with AddBeforeQueryExecutedListener 23 func (d *DocumentQueryCustomization) RemoveBeforeQueryExecutedListener(idx int) { 24 d.query.removeBeforeQueryExecutedListener(idx) 25 } 26 27 // AddAfterQueryExecutedListener adds a callback to get the results of the query 28 func (d *DocumentQueryCustomization) AddAfterQueryExecutedListener(action func(*QueryResult)) int { 29 return d.query.addAfterQueryExecutedListener(action) 30 } 31 32 // RemoveAfterQueryExecutedListener removes callback added with AddAfterQueryExecutedListener 33 func (d *DocumentQueryCustomization) RemoveAfterQueryExecutedListener(idx int) { 34 d.query.removeAfterQueryExecutedListener(idx) 35 } 36 37 // AddAfterStreamExecutedCallback adds a callback to get stream result 38 func (d *DocumentQueryCustomization) AddAfterStreamExecutedCallback(action func(map[string]interface{})) int { 39 return d.query.addAfterStreamExecutedListener(action) 40 } 41 42 // RemoveAfterStreamExecutedCallback remove callback added with AddAfterStreamExecutedCallback 43 func (d *DocumentQueryCustomization) RemoveAfterStreamExecutedCallback(idx int) { 44 d.query.removeAfterStreamExecutedListener(idx) 45 } 46 47 // NoCaching disables caching for query results 48 func (d *DocumentQueryCustomization) NoCaching() { 49 d.query.noCaching() 50 } 51 52 // NoTracking disables tracking for quried entities by Raven's Unit of Work 53 // Using this option prevents hodling query results in memory 54 func (d *DocumentQueryCustomization) NoTracking() { 55 d.query.noTracking() 56 } 57 58 // RandomOrdering orders search results randomly. 59 func (d *DocumentQueryCustomization) RandomOrdering() { 60 d.query.randomOrdering() 61 } 62 63 // RandomOrdering orders search results randomly with a given seed. 64 // This is useful for repeatable random queries 65 func (d *DocumentQueryCustomization) RandomOrderingWithSeed(seed string) { 66 d.query.randomOrderingWithSeed(seed) 67 } 68 69 // WaitForNonStaleResults instructs the query to wait for non results. 70 // waitTimeout of 0 means infinite timeout 71 // This shouldn't be used outside of unit tests unless you are well aware of the implications 72 func (d *DocumentQueryCustomization) WaitForNonStaleResults(waitTimeout time.Duration) { 73 d.query.waitForNonStaleResults(waitTimeout) 74 }