elsa-core/src/modules/Elsa.Elasticsearch/Extensions/ElasticExtensions.cs
2023-01-09 16:36:58 +01:00

44 lines
1.6 KiB
C#

using Elasticsearch.Net;
using Elsa.Elasticsearch.Common;
using Elsa.Elasticsearch.Implementations.RolloverStrategies;
using Elsa.Elasticsearch.Models;
using Elsa.Elasticsearch.Options;
using Elsa.Elasticsearch.Services;
using Nest;
using Index = Nest.Index;
namespace Elsa.Elasticsearch.Extensions;
public static class ElasticExtensions
{
public static ConnectionSettings ConfigureAuthentication(this ConnectionSettings settings, ElasticsearchOptions options)
{
if (!string.IsNullOrEmpty(options.ApiKey))
{
settings.ApiKeyAuthentication(new ApiKeyAuthenticationCredentials(options.ApiKey));
}
else if (!string.IsNullOrEmpty(options.Username) && !string.IsNullOrEmpty(options.Password))
{
settings.BasicAuthentication(options.Username, options.Password);
}
return settings;
}
public static ConnectionSettings ConfigureMapping(this ConnectionSettings settings, IDictionary<Type,string> indexConfig)
{
foreach (var config in Utils.GetElasticConfigurationTypes())
{
var configInstance = (IElasticConfiguration)Activator.CreateInstance(config)!;
configInstance.Apply(settings, indexConfig);
}
return settings;
}
public static void ApplyRolloverStrategy(this ElasticClient client, IDictionary<Type,string> aliasConfig, IndexRolloverStrategy strategy)
{
var strategyInstance = (IRolloverStrategy)Activator.CreateInstance(strategy.Value, args: client)!;
strategyInstance.Apply(Utils.GetElasticDocumentTypes(), aliasConfig);
}
}