books/backend/Books.Api/EventFlow/Extensions/ReadModelRegistrationExtensions.cs

34 lines
1.2 KiB
C#
Raw Normal View History

using Books.Api.EventFlow.ReadModels;
using Books.Api.EventFlow.Repositories;
using EventFlow;
using EventFlow.Extensions;
using EventFlow.PostgreSql.Extensions;
using EventFlow.Sql.ReadModels;
using ReadModelSqlGenerator = Books.Api.EventFlow.Customs.ReadModelSqlGenerator;
namespace Books.Api.EventFlow.Extensions;
public static class ReadModelRegistrationExtensions
{
public static IEventFlowOptions AddReadModels(this IEventFlowOptions options)
{
return options
.UsePostgreSqlReadModel<CompanyReadModel, CompanyReadModelLocator>()
.UsePostgreSqlReadModel<ApiKeyReadModel, ApiKeyReadModelLocator>()
.RegisterServices(sr => sr.AddSingleton<IReadModelSqlGenerator>(new ReadModelSqlGenerator()));
}
public static IServiceCollection AddRepositories(this IServiceCollection services)
{
// Register locators
services.AddTransient<CompanyReadModelLocator>();
services.AddTransient<ApiKeyReadModelLocator>();
// Register repositories
services.AddScoped<ICompanyRepository, CompanyRepository>();
services.AddScoped<IApiKeyRepository, ApiKeyRepository>();
return services;
}
}