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)
     });
 }
Ejemplo n.º 3
0
        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);
        }