< Summary

Information
Class: Elsa.Extensions.ServiceCollectionExtensions
Assembly: Elsa.AI.Persistence.EFCore
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.AI.Persistence.EFCore/Extensions/ServiceCollectionExtensions.cs
Line coverage
100%
Covered lines: 12
Uncovered lines: 0
Coverable lines: 12
Total lines: 40
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
AddAIPersistenceStores(...)100%44100%
AddAIPersistenceStoreServices(...)100%11100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.AI.Persistence.EFCore/Extensions/ServiceCollectionExtensions.cs

#LineLine coverage
 1using Elsa.AI.Abstractions.Contracts;
 2using Elsa.AI.Persistence.EFCore;
 3using Elsa.AI.Persistence.EFCore.Services;
 4using Elsa.AI.Persistence.EFCore.Stores;
 5using Microsoft.EntityFrameworkCore;
 6using Microsoft.Extensions.DependencyInjection;
 7using Microsoft.Extensions.DependencyInjection.Extensions;
 8using Microsoft.Extensions.Hosting;
 9
 10// ReSharper disable once CheckNamespace
 11namespace Elsa.Extensions;
 12
 13public static class ServiceCollectionExtensions
 14{
 15    public static IServiceCollection AddAIPersistenceStores(this IServiceCollection services, Action<DbContextOptionsBui
 16    {
 5217        if (!services.Any(x => x.ServiceType == typeof(DbContextOptions<AIDbContext>)))
 18        {
 419            if (configureDbContext == null)
 120                throw new InvalidOperationException($"Register {nameof(AIDbContext)} with configured {nameof(DbContextOp
 21            else
 322                services.AddDbContext<AIDbContext>(configureDbContext);
 23        }
 24
 425        services.TryAddScoped<AIDbContext>();
 426        services.AddAIPersistenceStoreServices();
 27
 428        return services;
 29    }
 30
 31    internal static IServiceCollection AddAIPersistenceStoreServices(this IServiceCollection services)
 32    {
 433        services.Replace(ServiceDescriptor.Scoped<IAIConversationStore, EFCoreAIConversationStore>());
 434        services.Replace(ServiceDescriptor.Scoped<IAIProposalStore, EFCoreAIProposalStore>());
 435        services.TryAddEnumerable(ServiceDescriptor.Scoped<IAIAuditEventHandler, EFCoreAIAuditSink>());
 436        services.TryAddEnumerable(ServiceDescriptor.Singleton<IHostedService, EFCoreAIConversationCleanupService>());
 37
 438        return services;
 39    }
 40}