private IQueryable <CollectionFileEntity> BuildFilesQuery(CollectionFilesQuery query) { var files = _roomDbContext.CollectionFiles.AsQueryable(); if (query.CollectionId.HasValue) { files = files.Where(x => x.CollectionId == query.CollectionId.Value); } if (query.CollectionFileIds?.Any() == true) { files = files.Where(x => query.CollectionFileIds.Contains(x.Id)); } if (query.Path != null) { files = files.Where(x => query.Path.Equals(x.Path)); } if (query.Md5 != null && query.Md5.Any()) { files = files.Where(x => query.Md5.Contains(x.Md5)); } files = files.OrderBy(x => x.AddedOn); return(files); }
public async Task <IReadOnlyCollection <CollectionFile> > SearchByQuery(CollectionFilesQuery query) { var files = BuildFilesQuery(query); if (query.Skip.HasValue) { files = files.Skip(query.Skip.Value); } if (query.Count.HasValue) { files = files.Take(query.Count.Value); } var loaded = await files.ToListAsync(); return(_mapper.Map <CollectionFile[]>(loaded)); }
public async Task <int> CountByQuery(CollectionFilesQuery query) { var files = BuildFilesQuery(query); return(await files.CountAsync()); }