Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }