• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

loresoft / MediatR.CommandQuery / 11418431610

19 Oct 2024 02:43PM UTC coverage: 58.337% (+0.9%) from 57.424%
11418431610

push

github

pwelter34
add HybridCache, misc refactors

331 of 675 branches covered (49.04%)

Branch coverage included in aggregate %.

28 of 176 new or added lines in 24 files covered. (15.91%)

156 existing lines in 33 files now uncovered.

1163 of 1886 relevant lines covered (61.66%)

19.49 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

77.42
/src/MediatR.CommandQuery.MongoDB/Handlers/EntitySelectQueryHandler.cs
1
using System.Linq.Dynamic.Core;
2

3
using AutoMapper;
4

5
using MediatR.CommandQuery.Extensions;
6
using MediatR.CommandQuery.Queries;
7

8
using Microsoft.Extensions.Logging;
9

10
using MongoDB.Abstracts;
11

12
namespace MediatR.CommandQuery.MongoDB.Handlers;
13

14
public class EntitySelectQueryHandler<TRepository, TEntity, TKey, TReadModel>
15
    : RepositoryHandlerBase<TRepository, TEntity, TKey, EntitySelectQuery<TReadModel>, IReadOnlyCollection<TReadModel>>
16
    where TRepository : IMongoRepository<TEntity, TKey>
17
    where TEntity : class
18
{
19
    public EntitySelectQueryHandler(ILoggerFactory loggerFactory, TRepository repository, IMapper mapper)
20
        : base(loggerFactory, repository, mapper)
6✔
21
    {
22
    }
6✔
23

24
    protected override Task<IReadOnlyCollection<TReadModel>> Process(EntitySelectQuery<TReadModel> request, CancellationToken cancellationToken)
25
    {
26
        ArgumentNullException.ThrowIfNull(request);
6✔
27

28
        var query = Repository.All();
6✔
29

30
        // build query from filter
31
        query = BuildQuery(request, query);
6✔
32

33
        // page the query and convert to read model
34
        var result = QueryList(request, query, cancellationToken);
6✔
35

36
        //TODO make async?
37
        return Task.FromResult(result);
6✔
38
    }
39

40

41
    protected virtual IQueryable<TEntity> BuildQuery(EntitySelectQuery<TReadModel> request, IQueryable<TEntity> query)
42
    {
43
        var entitySelect = request?.Select;
6!
44

45
        // build query from filter
46
        if (entitySelect?.Filter != null)
6!
47
            query = query.Filter(entitySelect.Filter);
6✔
48

49
        // add raw query
50
        if (!string.IsNullOrEmpty(entitySelect?.Query))
6!
UNCOV
51
            query = query.Where(entitySelect.Query);
×
52

53
        return query;
6✔
54
    }
55

56
    protected virtual IReadOnlyCollection<TReadModel> QueryList(EntitySelectQuery<TReadModel> request, IQueryable<TEntity> query, CancellationToken cancellationToken)
57
    {
58
        var results = query
6!
59
            .Sort(request?.Select?.Sort)
6✔
60
            .ToList();
6✔
61

62
        return Mapper.Map<IList<TEntity>, IReadOnlyCollection<TReadModel>>(results);
6✔
63
    }
64

65
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc