From fcfd187b058420c28775bfc7876be6ed2d831729 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCrkan=20G=C3=BCran?= Date: Fri, 6 Jan 2023 13:05:03 +0100 Subject: [PATCH] Read index names from appsettings --- .../Elsa.Elasticsearch/Common/ElasticFeatureBase.cs | 2 +- .../Extensions/ConnectionSettingsExtensions.cs | 4 ++-- .../Management/WorkflowInstanceConfiguration.cs | 5 +++-- .../Modules/Runtime/ExecutionLogConfiguration.cs | 5 +++-- .../Elsa.Elasticsearch/Options/ElasticsearchOptions.cs | 10 +--------- .../Services/IElasticConfiguration.cs | 8 ++++---- 6 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/modules/Elsa.Elasticsearch/Common/ElasticFeatureBase.cs b/src/modules/Elsa.Elasticsearch/Common/ElasticFeatureBase.cs index cd6bef125..0ab7d19a1 100644 --- a/src/modules/Elsa.Elasticsearch/Common/ElasticFeatureBase.cs +++ b/src/modules/Elsa.Elasticsearch/Common/ElasticFeatureBase.cs @@ -29,7 +29,7 @@ public abstract class ElasticFeatureBase : FeatureBase { return new ConnectionSettings(new Uri(Options.Endpoint)) .ConfigureAuthentication(Options) - .ConfigureMapping(); + .ConfigureMapping(Options); } protected void AddStore() where TModel : class where TStore : class diff --git a/src/modules/Elsa.Elasticsearch/Extensions/ConnectionSettingsExtensions.cs b/src/modules/Elsa.Elasticsearch/Extensions/ConnectionSettingsExtensions.cs index 63c3e9f72..463c136ab 100644 --- a/src/modules/Elsa.Elasticsearch/Extensions/ConnectionSettingsExtensions.cs +++ b/src/modules/Elsa.Elasticsearch/Extensions/ConnectionSettingsExtensions.cs @@ -21,7 +21,7 @@ public static class ConnectionSettingsExtensions return settings; } - public static ConnectionSettings ConfigureMapping(this ConnectionSettings settings) + public static ConnectionSettings ConfigureMapping(this ConnectionSettings settings, ElasticsearchOptions options) { var configs = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(s => s.GetTypes()) @@ -30,7 +30,7 @@ public static class ConnectionSettingsExtensions foreach (var config in configs) { var configInstance = (IElasticConfiguration)Activator.CreateInstance(config)!; - configInstance.Apply(settings); + configInstance.Apply(settings, options); } return settings; diff --git a/src/modules/Elsa.Elasticsearch/Modules/Management/WorkflowInstanceConfiguration.cs b/src/modules/Elsa.Elasticsearch/Modules/Management/WorkflowInstanceConfiguration.cs index 67c10c829..d351de6ce 100644 --- a/src/modules/Elsa.Elasticsearch/Modules/Management/WorkflowInstanceConfiguration.cs +++ b/src/modules/Elsa.Elasticsearch/Modules/Management/WorkflowInstanceConfiguration.cs @@ -1,3 +1,4 @@ +using Elsa.Elasticsearch.Options; using Elsa.Elasticsearch.Services; using Elsa.Workflows.Management.Entities; using Nest; @@ -8,9 +9,9 @@ public class WorkflowInstanceConfiguration : IElasticConfiguration { public const string IndexName = "workflow-instance"; - public void Apply(ConnectionSettings connectionSettings) + public void Apply(ConnectionSettings connectionSettings, ElasticsearchOptions options) { connectionSettings.DefaultMappingFor(m => - m.IndexName(IElasticConfiguration.ResolveIndexName(IndexName))); + m.IndexName(IElasticConfiguration.ResolveIndexName(options, IndexName))); } } \ No newline at end of file diff --git a/src/modules/Elsa.Elasticsearch/Modules/Runtime/ExecutionLogConfiguration.cs b/src/modules/Elsa.Elasticsearch/Modules/Runtime/ExecutionLogConfiguration.cs index acba05d49..6c82dbc4b 100644 --- a/src/modules/Elsa.Elasticsearch/Modules/Runtime/ExecutionLogConfiguration.cs +++ b/src/modules/Elsa.Elasticsearch/Modules/Runtime/ExecutionLogConfiguration.cs @@ -1,3 +1,4 @@ +using Elsa.Elasticsearch.Options; using Elsa.Elasticsearch.Services; using Elsa.Workflows.Runtime.Entities; using Nest; @@ -8,9 +9,9 @@ public class ExecutionLogConfiguration : IElasticConfiguration { private const string IndexName = "workflow-execution-log"; - public void Apply(ConnectionSettings connectionSettings) + public void Apply(ConnectionSettings connectionSettings, ElasticsearchOptions options) { connectionSettings.DefaultMappingFor(m => - m.IndexName(IElasticConfiguration.ResolveIndexName(IndexName))); + m.IndexName(IElasticConfiguration.ResolveIndexName(options, IndexName))); } } \ No newline at end of file diff --git a/src/modules/Elsa.Elasticsearch/Options/ElasticsearchOptions.cs b/src/modules/Elsa.Elasticsearch/Options/ElasticsearchOptions.cs index 877fd0405..ddf8e0d93 100644 --- a/src/modules/Elsa.Elasticsearch/Options/ElasticsearchOptions.cs +++ b/src/modules/Elsa.Elasticsearch/Options/ElasticsearchOptions.cs @@ -1,18 +1,10 @@ -using Elsa.Workflows.Management.Entities; -using Elsa.Workflows.Runtime.Entities; - namespace Elsa.Elasticsearch.Options; public class ElasticsearchOptions { public const string Elasticsearch = "Elasticsearch"; - public static readonly Dictionary Indices = new() - { - {typeof(WorkflowInstance),"workflow-instances"}, - {typeof(WorkflowExecutionLogRecord),"execution-log-records"} - }; - + public Dictionary Indices { get; set; } public string Endpoint { get; set; } public string Username { get; set; } public string Password { get; set; } diff --git a/src/modules/Elsa.Elasticsearch/Services/IElasticConfiguration.cs b/src/modules/Elsa.Elasticsearch/Services/IElasticConfiguration.cs index 0ddc98cb5..8056f5823 100644 --- a/src/modules/Elsa.Elasticsearch/Services/IElasticConfiguration.cs +++ b/src/modules/Elsa.Elasticsearch/Services/IElasticConfiguration.cs @@ -5,11 +5,11 @@ namespace Elsa.Elasticsearch.Services; public interface IElasticConfiguration { - void Apply(ConnectionSettings connectionSettings); + void Apply(ConnectionSettings connectionSettings, ElasticsearchOptions options); - public static string ResolveIndexName(string indexName) + public static string ResolveIndexName(ElasticsearchOptions options, string indexName) { - var indexNameFromConfig = ElasticsearchOptions.Indices[typeof(T)]; - return string.IsNullOrWhiteSpace(indexName) ? indexNameFromConfig : indexName; + var indexNameFromConfig = options.Indices[typeof(T).Name]; + return string.IsNullOrWhiteSpace(indexNameFromConfig) ? indexName : indexNameFromConfig; } } \ No newline at end of file