37 lines
1.2 KiB
C#
37 lines
1.2 KiB
C#
|
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));
|
|||
|
}
|
|||
|
}
|