public List <T> GetRawDtos <T, K>(Expression <Func <T, bool> > predicate = null, Expression <Func <T, K> > orderBy = null, int?skip = null, int?limit = null) where T : IHasId <T> { var query = repo.Query <T>(); if (predicate != null) { query = query.Where(predicate); } if (orderBy != null) { query = query.OrderBy(orderBy); } if (skip != null || limit != null) { ILiteQueryableResult <T> result = null; if (skip != null) { result = query.Skip(skip.Value); } if (limit != null) { result = query.Limit(limit.Value); } return(result.ToList()); } return(query.ToList()); }
// TODO: unit tests public IEnumerable <UnprocessedDocument> Query( string?Where = null, string?OrderByAsc = null, string?OrderByDesc = null, int?Offset = null, int?Limit = null) { if (OrderByAsc != null && OrderByDesc != null) { // TODO: better exception, maybe throw new ArgumentException(); } var query = Collection.Query(); query = Where != null?query.Where(Where) : query; query = OrderByAsc != null?query.OrderBy(OrderByAsc) : query; query = OrderByDesc != null?query.OrderByDescending(OrderByDesc) : query; ILiteQueryableResult <UnprocessedDocument> result = query; result = Offset != null?result.Offset(Offset.Value) : result; result = Limit != null?result.Limit(Limit.Value) : result; return(result.ToEnumerable()); }
public Task <ContentItem[]> GetContentItems(ContentItemQuery query) { var q = _liteRepository.Query <ContentItem>(); if (!string.IsNullOrEmpty(query.AppId)) { q = q.Where(ci => ci.AppId == query.AppId); } if (!string.IsNullOrEmpty(query.Id)) { q = q.Where(ci => ci.Id == query.Id); } if (!string.IsNullOrEmpty(query.CollectionId)) { q = q.Where(ci => ci.CollectionId == query.CollectionId); } if (!string.IsNullOrEmpty(query.ContentKey)) { q = q.Where(ci => ci.ContentKey == query.ContentKey); } if (!string.IsNullOrEmpty(query.ContentKeyStartsWith)) { q = q.Where(ci => ci.ContentKey.StartsWith(query.ContentKeyStartsWith)); } switch (query.OrderBy) { case ContentItemQuery.ContentItemsOrderBy.LastModifiedAtDescending: q = q.OrderByDescending(ci => ci.LastModifiedAt); break; case ContentItemQuery.ContentItemsOrderBy.ContentKey: q = q.OrderBy(ci => ci.ContentKey); break; } ILiteQueryableResult <ContentItem> result = q; if (query.Offset.HasValue) { result = result.Skip(query.Offset.Value); } if (query.First.HasValue) { result = result.Limit(query.First.Value); } return(Task.FromResult(result.ToArray())); }
public LiteDataQueryResult(ILiteQueryable <T> queryable, ILiteQueryableResult <T> result) { _queryable = queryable; _result = result; }