public async Task <HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken) { HttpResponseMessage response; try { QueryMetadata query = createQuery(_table, _settings); Paging paging = new PositionBasedPaging() { StartingPosition = _settings.startPos, NumberOfRecordsToFetch = _settings.fetch }; using (var client = ClientFactory.CreateClient <QueryServiceClient>()) { ExecuteQueryRequest queryRequest = new ExecuteQueryRequest(query, paging); ExecuteQueryResponse queryResponse = await client.ExecuteQueryAsync(queryRequest); response = createQueryResponse(_request, queryResponse.ExecuteQueryResult); } } catch (Exception ex) { response = _request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message); } return(response); }
private QueryMetadata createQuery(string table, QuerySettings settings) { QueryDataSourceMetadata datasource = new QueryDataSourceMetadata(); QueryMetadata query = new QueryMetadata(); Paging paging = new PositionBasedPaging() { StartingPosition = settings.startPos, NumberOfRecordsToFetch = settings.fetch }; query.DataSources = new QueryDataSourceMetadata[1]; datasource.Name = table; datasource.Table = table; datasource.Enabled = true; datasource.DynamicFieldList = true; datasource.OrderMode = OrderMode.OrderBy; if (settings.filterBy != "" && settings.filter != "") { datasource.Ranges = new QueryRangeMetadata[] { new QueryDataRangeMetadata() { TableName = table, FieldName = settings.filterBy, Value = settings.filter, Enabled = true } }; } query.DataSources[0] = datasource; query.OrderByFields = new QueryDataOrderByMetadata[] { new QueryDataOrderByMetadata() { DataSource = table, FieldName = settings.orderBy, SortOrder = settings.getSortOrder() } }; return(query); }