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

loresoft / MediatR.CommandQuery / 13272157037

11 Feb 2025 08:39PM UTC coverage: 60.884%. First build
13272157037

push

github

pwelter34
improve register extension methods

384 of 725 branches covered (52.97%)

Branch coverage included in aggregate %.

64 of 70 new or added lines in 4 files covered. (91.43%)

1269 of 1990 relevant lines covered (63.77%)

19.99 hits per line

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

0.0
/src/MediatR.CommandQuery.Cosmos/DomainServiceExtensions.cs
1
using Cosmos.Abstracts;
2

3
using MediatR.CommandQuery.Commands;
4
using MediatR.CommandQuery.Cosmos.Handlers;
5
using MediatR.CommandQuery.Definitions;
6
using MediatR.CommandQuery.Queries;
7

8
using Microsoft.Extensions.DependencyInjection;
9
using Microsoft.Extensions.DependencyInjection.Extensions;
10

11
namespace MediatR.CommandQuery.Cosmos;
12

13
public static class DomainServiceExtensions
14
{
15
    public static IServiceCollection AddEntityQueries<TRepository, TEntity, TReadModel>(this IServiceCollection services)
16
        where TRepository : ICosmosRepository<TEntity>
17
        where TEntity : class, IHaveIdentifier<string>, new()
18
        where TReadModel : class
19
    {
20
        ArgumentNullException.ThrowIfNull(services);
×
21

22
        // standard queries
23
        services.TryAddTransient<IRequestHandler<EntityIdentifierQuery<string, TReadModel>, TReadModel>, EntityIdentifierQueryHandler<TRepository, TEntity, TReadModel>>();
×
24
        services.TryAddTransient<IRequestHandler<EntityIdentifiersQuery<string, TReadModel>, IReadOnlyCollection<TReadModel>>, EntityIdentifiersQueryHandler<TRepository, TEntity, TReadModel>>();
×
25
        services.TryAddTransient<IRequestHandler<EntityPagedQuery<TReadModel>, EntityPagedResult<TReadModel>>, EntityPagedQueryHandler<TRepository, TEntity, TReadModel>>();
×
26
        services.TryAddTransient<IRequestHandler<EntitySelectQuery<TReadModel>, IReadOnlyCollection<TReadModel>>, EntitySelectQueryHandler<TRepository, TEntity, TReadModel>>();
×
27

NEW
28
        services.AddEntityQueryBehaviors<string, TReadModel>();
×
29

30
        return services;
×
31
    }
32

33

34
    public static IServiceCollection AddEntityCommands<TRepository, TEntity, TReadModel, TCreateModel, TUpdateModel>(this IServiceCollection services)
35
        where TRepository : ICosmosRepository<TEntity>
36
        where TEntity : class, IHaveIdentifier<string>, new()
37
        where TCreateModel : class
38
        where TUpdateModel : class
39
    {
40
        ArgumentNullException.ThrowIfNull(services);
×
41

42
        services
×
43
            .AddEntityCreateCommand<TRepository, TEntity, TReadModel, TCreateModel>()
×
44
            .AddEntityUpdateCommand<TRepository, TEntity, TReadModel, TUpdateModel>()
×
45
            .AddEntityUpsertCommand<TRepository, TEntity, TReadModel, TUpdateModel>()
×
46
            .AddEntityPatchCommand<TRepository, TEntity, TReadModel>()
×
47
            .AddEntityDeleteCommand<TRepository, TEntity, TReadModel>();
×
48

49
        return services;
×
50
    }
51

52

53
    public static IServiceCollection AddEntityCreateCommand<TRepository, TEntity, TReadModel, TCreateModel>(this IServiceCollection services)
54
        where TRepository : ICosmosRepository<TEntity>
55
        where TEntity : class, IHaveIdentifier<string>, new()
56
        where TCreateModel : class
57
    {
58
        ArgumentNullException.ThrowIfNull(services);
×
59

60
        // standard crud commands
61
        services.TryAddTransient<IRequestHandler<EntityCreateCommand<TCreateModel, TReadModel>, TReadModel>, EntityCreateCommandHandler<TRepository, TEntity, TCreateModel, TReadModel>>();
×
62

63
        // pipeline registration, run in order registered
NEW
64
        services.AddEntityCreateBehaviors<string, TReadModel, TCreateModel>();
×
65

66
        return services;
×
67
    }
68

69
    public static IServiceCollection AddEntityUpdateCommand<TRepository, TEntity, TReadModel, TUpdateModel>(this IServiceCollection services)
70
        where TRepository : ICosmosRepository<TEntity>
71
        where TEntity : class, IHaveIdentifier<string>, new()
72
        where TUpdateModel : class
73
    {
74
        ArgumentNullException.ThrowIfNull(services);
×
75

76
        // allow query for update models
77
        services.TryAddTransient<IRequestHandler<EntityIdentifierQuery<string, TUpdateModel>, TUpdateModel>, EntityIdentifierQueryHandler<TRepository, TEntity, TUpdateModel>>();
×
78
        services.TryAddTransient<IRequestHandler<EntityIdentifiersQuery<string, TUpdateModel>, IReadOnlyCollection<TUpdateModel>>, EntityIdentifiersQueryHandler<TRepository, TEntity, TUpdateModel>>();
×
79

80
        // standard crud commands
81
        services.TryAddTransient<IRequestHandler<EntityUpdateCommand<string, TUpdateModel, TReadModel>, TReadModel>, EntityUpdateCommandHandler<TRepository, TEntity, TUpdateModel, TReadModel>>();
×
82

NEW
83
        services.AddEntityUpdateBehaviors<string, TReadModel, TUpdateModel>();
×
84

85
        return services;
×
86
    }
87

88
    public static IServiceCollection AddEntityUpsertCommand<TRepository, TEntity, TReadModel, TUpdateModel>(this IServiceCollection services)
89
        where TRepository : ICosmosRepository<TEntity>
90
        where TEntity : class, IHaveIdentifier<string>, new()
91
        where TUpdateModel : class
92
    {
93
        ArgumentNullException.ThrowIfNull(services);
×
94

95
        // standard crud commands
96
        services.TryAddTransient<IRequestHandler<EntityUpsertCommand<string, TUpdateModel, TReadModel>, TReadModel>, EntityUpsertCommandHandler<TRepository, TEntity, TUpdateModel, TReadModel>>();
×
97

NEW
98
        services.AddEntityUpsertBehaviors<string, TReadModel, TUpdateModel>();
×
99

100
        return services;
×
101
    }
102

103
    public static IServiceCollection AddEntityPatchCommand<TRepository, TEntity, TReadModel>(this IServiceCollection services)
104
        where TRepository : ICosmosRepository<TEntity>
105
        where TEntity : class, IHaveIdentifier<string>, new()
106
    {
107
        ArgumentNullException.ThrowIfNull(services);
×
108

109
        // standard crud commands
110
        services.TryAddTransient<IRequestHandler<EntityPatchCommand<string, TReadModel>, TReadModel>, EntityPatchCommandHandler<TRepository, TEntity, TReadModel>>();
×
111

NEW
112
        services.AddEntityPatchBehaviors<string, TEntity, TReadModel>();
×
113

114
        return services;
×
115
    }
116

117
    public static IServiceCollection AddEntityDeleteCommand<TRepository, TEntity, TReadModel>(this IServiceCollection services)
118
        where TRepository : ICosmosRepository<TEntity>
119
        where TEntity : class, IHaveIdentifier<string>, new()
120
    {
121
        ArgumentNullException.ThrowIfNull(services);
×
122

123
        // standard crud commands
124
        services.TryAddTransient<IRequestHandler<EntityDeleteCommand<string, TReadModel>, TReadModel>, EntityDeleteCommandHandler<TRepository, TEntity, TReadModel>>();
×
125

NEW
126
        services.AddEntityDeleteBehaviors<string, TEntity, TReadModel>();
×
127

128
        return services;
×
129
    }
130
}
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