Files
Alexandru-Victor Macocian e40e42ba40 Setup reading and persistence
2025-11-28 17:07:37 +01:00

44 lines
1.4 KiB
C#

using System.Core.Extensions;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Nest;
using Robin.Services.Monitoring;
using Robin.Services.Persistence;
using Robin.Services.Publishing;
namespace Robin.Services;
public static class BuilderExtensions
{
public static IHostApplicationBuilder AddRobinServices(this IHostApplicationBuilder builder)
{
var elasticClientOptions = builder
.Configuration.GetSection(ElasticOptions.SectionName)
.Get<ElasticOptions>();
if (elasticClientOptions is null)
{
throw new InvalidOperationException(
"ElasticOptions section is missing in configuration."
);
}
builder.ThrowIfNull();
builder.Services.AddHostedService<MonitoringService>();
builder.Services.AddSingleton<IElasticClient>(
new ElasticClient(
new ConnectionSettings(elasticClientOptions.Uri)
.BasicAuthentication(
elasticClientOptions.Username,
elasticClientOptions.Password
)
.DefaultIndex(elasticClientOptions.Index)
)
);
builder.Services.AddSingleton<IPublishingService, ElasticPublishingService>();
builder.Services.AddSingleton<PositionPersistenceService>();
return builder;
}
}