< 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: 10
Uncovered lines: 0
Coverable lines: 10
Total lines: 34
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%

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    {
 2917        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>();
 26
 427        services.Replace(ServiceDescriptor.Scoped<IAIConversationStore, EFCoreAIConversationStore>());
 428        services.Replace(ServiceDescriptor.Scoped<IAIProposalStore, EFCoreAIProposalStore>());
 429        services.TryAddEnumerable(ServiceDescriptor.Scoped<IAIAuditEventHandler, EFCoreAIAuditSink>());
 430        services.TryAddEnumerable(ServiceDescriptor.Singleton<IHostedService, EFCoreAIConversationCleanupService>());
 31
 432        return services;
 33    }
 34}