public GetRequest CreateRequest(JsonOperationContext ctx) { return(new GetRequest { Url = "/queries", Method = HttpMethod.Post, Query = $"?queryHash={_indexQuery.GetQueryHash(ctx)}", Content = new IndexQueryContent(_conventions, _indexQuery) }); }
public GetRequest CreateRequest(JsonOperationContext ctx) { return(new GetRequest { CanCacheAggressively = _indexQuery.DisableCaching == false && _indexQuery.WaitForNonStaleResults == false, Url = "/queries", Method = HttpMethod.Post, Query = $"?queryHash={_indexQuery.GetQueryHash(ctx, _session.Conventions, _session.JsonSerializer)}", Content = new IndexQueryContent(_session.Conventions, _indexQuery) }); }
public override HttpRequestMessage CreateRequest(JsonOperationContext ctx, ServerNode node, out string url) { CanCache = _indexQuery.DisableCaching == false; // we won't allow aggressive caching of queries with WaitForNonStaleResults CanCacheAggressively = CanCache && _indexQuery.WaitForNonStaleResults == false; var path = new StringBuilder(node.Url) .Append("/databases/") .Append(node.Database) .Append("/queries?queryHash=") // we need to add a query hash because we are using POST queries // so we need to unique parameter per query so the query cache will // work properly .Append(_indexQuery.GetQueryHash(ctx, _conventions, _session.JsonSerializer)); if (_metadataOnly) { path.Append("&metadataOnly=true"); } if (_indexEntriesOnly) { path.Append("&debug=entries"); } var request = new HttpRequestMessage { Method = HttpMethod.Post, Content = new BlittableJsonContent(async stream => { // this is here to catch people closing the session before the ToListAsync() completes _session.AssertNotDisposed(); await using (var writer = new AsyncBlittableJsonTextWriter(ctx, stream)) { writer.WriteIndexQuery(_conventions, ctx, _indexQuery); } } ) }; url = path.ToString(); return(request); }