< Summary

Information
Class: ArturRios.Data.MongoDb.DependencyInjection.ServiceCollectionExtensions
Assembly: ArturRios.Data.MongoDb
File(s): /home/runner/work/dotnet-data/dotnet-data/src/ArturRios.Data.MongoDb/DependencyInjection/ServiceCollectionExtensions.cs
Line coverage
84%
Covered lines: 11
Uncovered lines: 2
Coverable lines: 13
Total lines: 51
Line coverage: 84.6%
Branch coverage
0%
Covered branches: 0
Total branches: 2
Branch coverage: 0%
Method coverage
50%
Covered methods: 1
Fully covered methods: 1
Total methods: 2
Method coverage: 50%
Full method coverage: 50%

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
AddMongoData(...)0%620%
AddMongoData(...)100%11100%

File(s)

/home/runner/work/dotnet-data/dotnet-data/src/ArturRios.Data.MongoDb/DependencyInjection/ServiceCollectionExtensions.cs

#LineLine coverage
 1using ArturRios.Data.MongoDb.Configuration;
 2using ArturRios.Data.MongoDb.Interfaces;
 3using ArturRios.Data.MongoDb.Repositories;
 4using ArturRios.Data.MongoDb.Transactions;
 5using Microsoft.Extensions.Configuration;
 6using Microsoft.Extensions.DependencyInjection;
 7using MongoDB.Driver;
 8
 9namespace ArturRios.Data.MongoDb.DependencyInjection;
 10
 11/// <summary>Dependency-injection registration for the ArturRios.Data.MongoDb document store.</summary>
 12public static class ServiceCollectionExtensions
 13{
 14    /// <param name="services">The service collection.</param>
 15    extension(IServiceCollection services)
 16    {
 17        /// <summary>Registers the MongoDB document store, binding options from configuration.</summary>
 18        /// <param name="configuration">Application configuration.</param>
 19        /// <param name="sectionName">Configuration section holding the options. Defaults to "ArturRios.Data.MongoDb".</
 20        public IServiceCollection AddMongoData(IConfiguration configuration,
 21            string sectionName = "ArturRios.Data.MongoDb")
 22        {
 023            var options = configuration.GetSection(sectionName).Get<MongoOptions>() ?? new MongoOptions();
 024            return services.AddMongoData(options);
 25        }
 26
 27        /// <summary>
 28        ///     Registers the MongoDB document store from an explicit options instance.
 29        ///     Failures are logged in full when logging is registered (<c>AddLogging</c>); without
 30        ///     it the repositories still run and error envelopes carry no driver text.
 31        /// </summary>
 32        /// <param name="options">The Mongo options.</param>
 33        public IServiceCollection AddMongoData(MongoOptions options)
 34        {
 835            services.AddSingleton<IMongoClient>(_ => new MongoClient(options.ConnectionString));
 436            services.AddScoped<IMongoDatabase>(sp =>
 837                sp.GetRequiredService<IMongoClient>().GetDatabase(options.DatabaseName));
 438            services.AddScoped<MongoContext>();
 39
 440            services.AddScoped(typeof(IDocumentReadOnlyRepository<>), typeof(MongoDocumentRepository<>));
 441            services.AddScoped(typeof(IDocumentRepository<>), typeof(MongoDocumentRepository<>));
 442            services.AddScoped(typeof(IAsyncDocumentReadOnlyRepository<>), typeof(MongoDocumentRepository<>));
 443            services.AddScoped(typeof(IAsyncDocumentRepository<>), typeof(MongoDocumentRepository<>));
 44
 445            services.AddScoped<IMongoUnitOfWork, MongoUnitOfWork>();
 446            services.AddScoped<IAsyncMongoUnitOfWork, MongoUnitOfWork>();
 47
 448            return services;
 49        }
 50    }
 51}