FruityFoundation/FruityFoundation.DataAccess.Sqlite/ServiceCollectionExtensions.cs

37 lines
1.2 KiB
C#
Raw Normal View History

using System.Diagnostics.CodeAnalysis;
using FruityFoundation.DataAccess.Abstractions;
using Microsoft.Extensions.DependencyInjection;
namespace FruityFoundation.DataAccess.Sqlite;
[ExcludeFromCodeCoverage(Justification = "Dependency injection helpers")]
public static class ServiceCollectionExtensions
{
public static void AddSqliteDataAccess(
this IServiceCollection services,
Func<IServiceProvider, string> getReadWriteConnectionString,
Func<IServiceProvider, string> getReadOnlyConnectionString
)
{
services.AddScoped<INonTransactionalDbConnection<ReadWrite>>(serviceProvider =>
{
var connectionFactory = serviceProvider.GetRequiredService<IDbConnectionFactory>();
return connectionFactory.CreateConnection();
});
services.AddScoped<INonTransactionalDbConnection<ReadOnly>>(serviceProvider =>
{
var connectionFactory = serviceProvider.GetRequiredService<IDbConnectionFactory>();
return connectionFactory.CreateReadOnlyConnection();
});
services.AddSingleton<IDbConnectionFactory, SqliteDbConnectionFactory>(serviceProvider =>
new SqliteDbConnectionFactory(
serviceProvider,
getReadOnlyConnectionString: getReadOnlyConnectionString,
getReadWriteConnectionString: getReadWriteConnectionString));
}
}