protected override QueryableSortOperation HandleOperation(
     QueryableSortContext context,
     QueryableFieldSelector fieldSelector,
     ISortField field,
     ISortEnumValue?sortEnumValue)
 {
     return(DescendingSortOperation.From(fieldSelector));
 }
Esempio n. 2
0
 public QueryableSortContext(
     ISortInputType initialType,
     bool inMemory)
     : base(initialType)
 {
     InMemory     = inMemory;
     RuntimeTypes = new Stack <IExtendedType>();
     RuntimeTypes.Push(initialType.EntityType);
     Instance.Push(QueryableFieldSelector.New(initialType.EntityType.Source));
 }
Esempio n. 3
0
        public async Task <RestItemData> GetDataAsync(IEnumerable <string> fieldNames)
        {
            var fieldAuth = new FieldAuthChecker <TItem>(_context.Fields, _context.AuthorizationChecker, _item);
            IEnumerable <string> fields = fieldAuth.GetOrEnsureFields(fieldNames, 0);

            var selector      = new QueryableFieldSelector <TItem>(_context.Fields, fields);
            var loadedObjects = await selector.SelectFieldsOnlyAsync(_item.Query, _context.Repository.ForEachAsync);

            RestItemData loadedObject = ItemQueryHelper.SingleOrThrow(loadedObjects);

            return(loadedObject);
        }
Esempio n. 4
0
        public async Task SingleItem_SelectFields_CorrectName()
        {
            var artist = _fixture.Create <Artist>();

            var selector = new QueryableFieldSelector <Artist>(new Dictionary <string, IFieldReader <Artist> >
            {
                { "name", new PropertyInfoFieldReader <Artist>(NameProperty) }
            });

            var selectedItemData = await selector.SelectFieldsOnlyAsync(artist);

            Assert.Equal(artist.Name, selectedItemData["name"]);
        }
Esempio n. 5
0
        public async Task Replacers_SelectFields_CorrectName()
        {
            var artists = _fixture.CreateMany <Artist>().ToList();

            var selector = new QueryableFieldSelector <Artist>(new Dictionary <string, IFieldReader <Artist> >
            {
                { "name", new ReplacerFieldReader(new PropertyInfoFieldReader <Artist>(NameProperty)) }
            });

            var selectedItemData = await selector.SelectFieldsOnlyAsync(artists.AsQueryable(), ItemQueryHelper.DefaultForEachAsync);

            var firstSelection = selectedItemData.First();

            Assert.Equal("replaced", firstSelection["name"]);
        }
Esempio n. 6
0
        public async Task <RestCollectionData> QueryDataAsync(IRestCollectionQuery query)
        {
            await _context.Repository.InitializeAsync();

            var fieldAuth = new FieldAuthChecker <TItem>(_context.Fields, _context.AuthorizationChecker, null);
            IEnumerable <string> fields = fieldAuth.GetOrEnsureFields(query?.SelectFields, 1);
            var selector = new QueryableFieldSelector <TItem>(_context.Fields.GetReaders(fields));

            var queryBuilder         = new ContextQueryBuilder <TItem>(_context, query);
            IQueryable <TItem> items = queryBuilder.BuildQueryable();

            QueriedDataIterator queriedData = await selector.SelectFieldsOnlyAsync(items, _context.Repository.ForEachAsync);

            PageDetails pageDetails = queryBuilder.GetPageDetails(queriedData);

            return(new RestCollectionData(queriedData, pageDetails));
        }
        public async Task <RestDictionaryData> QueryDataAsync(IRestCollectionQuery query)
        {
            await _context.Repository.InitializeAsync();

            var queryBuilder         = new ContextQueryBuilder <TItem>(_context, query);
            IQueryable <TItem> items = queryBuilder.BuildQueryable();

            var fieldAuth = new FieldAuthChecker <TItem>(_context.Fields, _context.AuthorizationChecker, null);
            IEnumerable <string> fields = fieldAuth.GetOrEnsureFields(query?.SelectFields, 1);

            var readers = _context.Fields.GetReaders(fields);

            readers.Add(IDENTIFIER_FIELD_NAME, new IdentifierFieldReader <TItem>(_namedReferenceInfo));
            var selector = new QueryableFieldSelector <TItem>(readers);

            QueriedDataIterator queriedData = await selector.SelectFieldsOnlyAsync(items, _context.Repository.ForEachAsync);

            PageDetails pageDetails = queryBuilder.GetPageDetails(queriedData);

            var dictionaryData = GetKeys(queriedData).ToDictionary(k => k.Key, v => (object)v.Value);

            return(new RestDictionaryData(dictionaryData, pageDetails));
        }
 public static DescendingSortOperation From(QueryableFieldSelector selector) =>
 new DescendingSortOperation(selector);
 protected DescendingSortOperation(QueryableFieldSelector fieldSelector)
     : base(fieldSelector)
 {
 }
Esempio n. 10
0
 protected abstract QueryableSortOperation HandleOperation(
     QueryableSortContext context,
     QueryableFieldSelector fieldSelector,
     ISortField field,
     ISortEnumValue?sortEnumValue);
 protected QueryableSortOperation(QueryableFieldSelector fieldSelector)
 {
     Selector            = fieldSelector.Selector;
     ParameterExpression = fieldSelector.ParameterExpression;
 }