public async Task StreamQueryGet() { using (TrackRequestTime()) using (var token = CreateTimeLimitedOperationToken()) using (Database.DocumentsStorage.ContextPool.AllocateOperationContext(out DocumentsOperationContext context)) { var queryJson = await context.ReadForMemoryAsync(RequestBodyStream(), "index/query"); var query = IndexQueryServerSide.Create(queryJson, context, Database.QueryMetadataCache); var runner = new QueryRunner(Database, context); using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) { try { await runner.ExecuteStreamQuery(query, HttpContext.Response, writer, token).ConfigureAwait(false); } catch (IndexDoesNotExistException) { HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound; context.Write(writer, json: new DynamicJsonValue { ["Error"] = "Index " + query.Metadata.IndexName + " does not exists" }); } } } }
public async Task StreamQueryGet() { var indexName = RouteMatch.Url.Substring(RouteMatch.MatchLength); DocumentsOperationContext context; using (TrackRequestTime()) using (var token = CreateTimeLimitedOperationToken()) using (Database.DocumentsStorage.ContextPool.AllocateOperationContext(out context)) { var query = IndexQueryServerSide.Create(HttpContext, GetStart(), GetPageSize(int.MaxValue), context); if (string.IsNullOrWhiteSpace(query.Query)) { query.Query = _postQuery; } var runner = new QueryRunner(Database, context); using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) { try { await runner.ExecuteStreamQuery(indexName, query, HttpContext.Response, writer, token).ConfigureAwait(false); } catch (IndexDoesNotExistsException) { HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound; } } } }