Example #1
0
    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);
    }
Example #2
0
    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));
    }
Example #3
0
    public async Task <int> CountByQuery(CollectionFilesQuery query)
    {
        var files = BuildFilesQuery(query);

        return(await files.CountAsync());
    }