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

loresoft / MediatR.CommandQuery / 11937278774

20 Nov 2024 04:10PM UTC coverage: 59.17% (-0.1%) from 59.302%
11937278774

push

github

pwelter34
make HybridCache optional

389 of 745 branches covered (52.21%)

Branch coverage included in aggregate %.

0 of 6 new or added lines in 2 files covered. (0.0%)

1 existing line in 1 file now uncovered.

1208 of 1954 relevant lines covered (61.82%)

19.52 hits per line

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

30.61
/src/MediatR.CommandQuery/MediatorServiceExtensions.cs
1
using FluentValidation;
2

3
using MediatR.CommandQuery.Behaviors;
4
using MediatR.CommandQuery.Commands;
5
using MediatR.CommandQuery.Definitions;
6
using MediatR.CommandQuery.Dispatcher;
7
using MediatR.CommandQuery.Queries;
8
using MediatR.CommandQuery.Services;
9
using MediatR.NotificationPublishers;
10

11
using Microsoft.Extensions.DependencyInjection;
12
using Microsoft.Extensions.DependencyInjection.Extensions;
13

14
namespace MediatR.CommandQuery;
15

16
public static class MediatorServiceExtensions
17
{
18
    public static IServiceCollection AddMediator(this IServiceCollection services, ServiceLifetime lifetime = ServiceLifetime.Transient)
19
    {
20
        ArgumentNullException.ThrowIfNull(services);
4✔
21

22
        services.TryAdd(new ServiceDescriptor(typeof(IMediator), typeof(Mediator), lifetime));
4✔
23
        services.TryAdd(new ServiceDescriptor(typeof(ISender), (sp) => sp.GetRequiredService<IMediator>(), lifetime));
4✔
24
        services.TryAdd(new ServiceDescriptor(typeof(IPublisher), (sp) => sp.GetRequiredService<IMediator>(), lifetime));
4✔
25
        services.TryAdd(new ServiceDescriptor(typeof(INotificationPublisher), typeof(TaskWhenAllPublisher), lifetime));
4✔
26

27
        services.TryAddSingleton<IPrincipalReader, PrincipalReader>();
4✔
28

29
        return services;
4✔
30
    }
31

32
    public static IServiceCollection AddValidatorsFromAssembly<T>(this IServiceCollection services)
33
    {
34
        ArgumentNullException.ThrowIfNull(services);
4✔
35

36
        // Register validators
37
        var scanner = AssemblyScanner.FindValidatorsInAssemblyContaining<T>();
4✔
38
        foreach (var scanResult in scanner)
136✔
39
        {
40
            //Register as interface
41
            services.TryAdd(new ServiceDescriptor(scanResult.InterfaceType, scanResult.ValidatorType, ServiceLifetime.Singleton));
64✔
42
            //Register as self
43
            services.TryAdd(new ServiceDescriptor(scanResult.ValidatorType, scanResult.ValidatorType, ServiceLifetime.Singleton));
64✔
44
        }
45

46
        return services;
4✔
47
    }
48

49

50
    public static IServiceCollection AddRemoteDispatcher(this IServiceCollection services)
51
    {
52
        ArgumentNullException.ThrowIfNull(services);
×
53

54
        services.TryAddTransient<IDispatcher>(sp => sp.GetRequiredService<RemoteDispatcher>());
×
55
        services.AddOptions<DispatcherOptions>();
×
56

57
        return services;
×
58
    }
59

60
    public static IServiceCollection AddServerDispatcher(this IServiceCollection services)
61
    {
62
        ArgumentNullException.ThrowIfNull(services);
×
63

64
        services.TryAddTransient<IDispatcher, MediatorDispatcher>();
×
65
        services.AddOptions<DispatcherOptions>();
×
66

67
        return services;
×
68
    }
69

70

71
    public static IServiceCollection AddEntityQueryMemoryCache<TKey, TReadModel>(this IServiceCollection services)
72
    {
73
        ArgumentNullException.ThrowIfNull(services);
×
74

75
        services.AddTransient<IPipelineBehavior<EntityIdentifierQuery<TKey, TReadModel>, TReadModel>, MemoryCacheQueryBehavior<EntityIdentifierQuery<TKey, TReadModel>, TReadModel>>();
×
76
        services.AddTransient<IPipelineBehavior<EntityIdentifiersQuery<TKey, TReadModel>, IReadOnlyCollection<TReadModel>>, MemoryCacheQueryBehavior<EntityIdentifiersQuery<TKey, TReadModel>, IReadOnlyCollection<TReadModel>>>();
×
77
        services.AddTransient<IPipelineBehavior<EntityPagedQuery<TReadModel>, EntityPagedResult<TReadModel>>, MemoryCacheQueryBehavior<EntityPagedQuery<TReadModel>, EntityPagedResult<TReadModel>>>();
×
78
        services.AddTransient<IPipelineBehavior<EntitySelectQuery<TReadModel>, IReadOnlyCollection<TReadModel>>, MemoryCacheQueryBehavior<EntitySelectQuery<TReadModel>, IReadOnlyCollection<TReadModel>>>();
×
79

80
        return services;
×
81
    }
82

83
    public static IServiceCollection AddEntityQueryDistributedCache<TKey, TReadModel>(this IServiceCollection services)
84
    {
85
        ArgumentNullException.ThrowIfNull(services);
×
86

87
        services.AddTransient<IPipelineBehavior<EntityIdentifierQuery<TKey, TReadModel>, TReadModel>, DistributedCacheQueryBehavior<EntityIdentifierQuery<TKey, TReadModel>, TReadModel>>();
×
88
        services.AddTransient<IPipelineBehavior<EntityIdentifiersQuery<TKey, TReadModel>, IReadOnlyCollection<TReadModel>>, DistributedCacheQueryBehavior<EntityIdentifiersQuery<TKey, TReadModel>, IReadOnlyCollection<TReadModel>>>();
×
89
        services.AddTransient<IPipelineBehavior<EntityPagedQuery<TReadModel>, EntityPagedResult<TReadModel>>, DistributedCacheQueryBehavior<EntityPagedQuery<TReadModel>, EntityPagedResult<TReadModel>>>();
×
90
        services.AddTransient<IPipelineBehavior<EntitySelectQuery<TReadModel>, IReadOnlyCollection<TReadModel>>, DistributedCacheQueryBehavior<EntitySelectQuery<TReadModel>, IReadOnlyCollection<TReadModel>>>();
×
91

92
        return services;
×
93
    }
94

95
    public static IServiceCollection AddEntityHybridCache<TKey, TReadModel>(this IServiceCollection services)
96
    {
97
        ArgumentNullException.ThrowIfNull(services);
×
98

99
        services.AddTransient<IPipelineBehavior<EntityIdentifierQuery<TKey, TReadModel>, TReadModel>, HybridCacheQueryBehavior<EntityIdentifierQuery<TKey, TReadModel>, TReadModel>>();
×
100
        services.AddTransient<IPipelineBehavior<EntityIdentifiersQuery<TKey, TReadModel>, IReadOnlyCollection<TReadModel>>, HybridCacheQueryBehavior<EntityIdentifiersQuery<TKey, TReadModel>, IReadOnlyCollection<TReadModel>>>();
×
101
        services.AddTransient<IPipelineBehavior<EntityPagedQuery<TReadModel>, EntityPagedResult<TReadModel>>, HybridCacheQueryBehavior<EntityPagedQuery<TReadModel>, EntityPagedResult<TReadModel>>>();
×
102
        services.AddTransient<IPipelineBehavior<EntitySelectQuery<TReadModel>, IReadOnlyCollection<TReadModel>>, HybridCacheQueryBehavior<EntitySelectQuery<TReadModel>, IReadOnlyCollection<TReadModel>>>();
×
103

NEW
104
        return services;
×
105
    }
106

107
    public static IServiceCollection AddEntityHybridCache<TKey, TReadModel, TCreateModel, TUpdateModel>(this IServiceCollection services)
108
    {
NEW
109
        ArgumentNullException.ThrowIfNull(services);
×
110

NEW
111
        services.AddEntityHybridCache<TKey, TReadModel>();
×
112

113
        services.AddTransient<IPipelineBehavior<EntityCreateCommand<TCreateModel, TReadModel>, TReadModel>, HybridCacheExpireBehavior<EntityCreateCommand<TCreateModel, TReadModel>, TReadModel>>();
×
114
        services.AddTransient<IPipelineBehavior<EntityUpdateCommand<TKey, TUpdateModel, TReadModel>, TReadModel>, HybridCacheExpireBehavior<EntityUpdateCommand<TKey, TUpdateModel, TReadModel>, TReadModel>>();
×
115
        services.AddTransient<IPipelineBehavior<EntityUpsertCommand<TKey, TUpdateModel, TReadModel>, TReadModel>, HybridCacheExpireBehavior<EntityUpsertCommand<TKey, TUpdateModel, TReadModel>, TReadModel>>();
×
116
        services.AddTransient<IPipelineBehavior<EntityPatchCommand<TKey, TReadModel>, TReadModel>, HybridCacheExpireBehavior<EntityPatchCommand<TKey, TReadModel>, TReadModel>>();
×
117
        services.AddTransient<IPipelineBehavior<EntityDeleteCommand<TKey, TReadModel>, TReadModel>, HybridCacheExpireBehavior<EntityDeleteCommand<TKey, TReadModel>, TReadModel>>();
×
118

119
        return services;
×
120
    }
121
}
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

© 2025 Coveralls, Inc