protected override QueryableSortOperation HandleOperation( QueryableSortContext context, QueryableFieldSelector fieldSelector, ISortField field, ISortEnumValue?sortEnumValue) { return(DescendingSortOperation.From(fieldSelector)); }
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)); }
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); }
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"]); }
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"]); }
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) { }
protected abstract QueryableSortOperation HandleOperation( QueryableSortContext context, QueryableFieldSelector fieldSelector, ISortField field, ISortEnumValue?sortEnumValue);
protected QueryableSortOperation(QueryableFieldSelector fieldSelector) { Selector = fieldSelector.Selector; ParameterExpression = fieldSelector.ParameterExpression; }