From eebd24a8d38dfc8cd3eb391bab131e56cb133e51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCrkan=20G=C3=BCran?= Date: Fri, 6 Jan 2023 13:18:37 +0100 Subject: [PATCH] Refactor --- .../Elsa.Elasticsearch/Common/ElasticFeatureBase.cs | 3 ++- .../Extensions/ConnectionSettingsExtensions.cs | 4 ++-- .../Elsa.Elasticsearch/Modules/Management/Extensions.cs | 9 +++++++-- .../Modules/Management/WorkflowInstanceConfiguration.cs | 6 +++--- .../Modules/Runtime/ExecutionLogConfiguration.cs | 4 ++-- .../Elsa.Elasticsearch/Modules/Runtime/Extensions.cs | 9 +++++++-- .../Elsa.Elasticsearch/Services/IElasticConfiguration.cs | 6 +++--- 7 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/modules/Elsa.Elasticsearch/Common/ElasticFeatureBase.cs b/src/modules/Elsa.Elasticsearch/Common/ElasticFeatureBase.cs index 0ab7d19a1..91f61e4f1 100644 --- a/src/modules/Elsa.Elasticsearch/Common/ElasticFeatureBase.cs +++ b/src/modules/Elsa.Elasticsearch/Common/ElasticFeatureBase.cs @@ -16,6 +16,7 @@ public abstract class ElasticFeatureBase : FeatureBase } internal ElasticsearchOptions Options { get; set; } = new(); + internal IDictionary IndexConfig { get; set; } public override void Apply() { @@ -29,7 +30,7 @@ public abstract class ElasticFeatureBase : FeatureBase { return new ConnectionSettings(new Uri(Options.Endpoint)) .ConfigureAuthentication(Options) - .ConfigureMapping(Options); + .ConfigureMapping(IndexConfig); } 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 463c136ab..b184035b0 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, ElasticsearchOptions options) + public static ConnectionSettings ConfigureMapping(this ConnectionSettings settings, IDictionary indexConfig) { 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, options); + configInstance.Apply(settings, indexConfig); } return settings; diff --git a/src/modules/Elsa.Elasticsearch/Modules/Management/Extensions.cs b/src/modules/Elsa.Elasticsearch/Modules/Management/Extensions.cs index 18182aefa..78f2b9ea2 100644 --- a/src/modules/Elsa.Elasticsearch/Modules/Management/Extensions.cs +++ b/src/modules/Elsa.Elasticsearch/Modules/Management/Extensions.cs @@ -8,9 +8,14 @@ public static class Extensions /// /// Configures the to use the . /// - public static WorkflowInstanceFeature UseElasticsearch(this WorkflowInstanceFeature feature, ElasticsearchOptions options, Action? configure = default) + public static WorkflowInstanceFeature UseElasticsearch(this WorkflowInstanceFeature feature, ElasticsearchOptions options, IDictionary? indexConfig = default, Action? configure = default) { - configure += f => f.Options = options; + configure += f => + { + f.Options = options; + f.IndexConfig = indexConfig ?? new Dictionary(); + }; + feature.Module.Configure(configure); return feature; } diff --git a/src/modules/Elsa.Elasticsearch/Modules/Management/WorkflowInstanceConfiguration.cs b/src/modules/Elsa.Elasticsearch/Modules/Management/WorkflowInstanceConfiguration.cs index d351de6ce..cfcb245c0 100644 --- a/src/modules/Elsa.Elasticsearch/Modules/Management/WorkflowInstanceConfiguration.cs +++ b/src/modules/Elsa.Elasticsearch/Modules/Management/WorkflowInstanceConfiguration.cs @@ -7,11 +7,11 @@ namespace Elsa.Elasticsearch.Modules.Management; public class WorkflowInstanceConfiguration : IElasticConfiguration { - public const string IndexName = "workflow-instance"; + private const string IndexName = "workflow-instance"; - public void Apply(ConnectionSettings connectionSettings, ElasticsearchOptions options) + public void Apply(ConnectionSettings connectionSettings, IDictionary indexConfig) { connectionSettings.DefaultMappingFor(m => - m.IndexName(IElasticConfiguration.ResolveIndexName(options, IndexName))); + m.IndexName(IElasticConfiguration.ResolveIndexName(indexConfig, 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 6c82dbc4b..cd5623300 100644 --- a/src/modules/Elsa.Elasticsearch/Modules/Runtime/ExecutionLogConfiguration.cs +++ b/src/modules/Elsa.Elasticsearch/Modules/Runtime/ExecutionLogConfiguration.cs @@ -9,9 +9,9 @@ public class ExecutionLogConfiguration : IElasticConfiguration { private const string IndexName = "workflow-execution-log"; - public void Apply(ConnectionSettings connectionSettings, ElasticsearchOptions options) + public void Apply(ConnectionSettings connectionSettings, IDictionary indexConfig) { connectionSettings.DefaultMappingFor(m => - m.IndexName(IElasticConfiguration.ResolveIndexName(options, IndexName))); + m.IndexName(IElasticConfiguration.ResolveIndexName(indexConfig, IndexName))); } } \ No newline at end of file diff --git a/src/modules/Elsa.Elasticsearch/Modules/Runtime/Extensions.cs b/src/modules/Elsa.Elasticsearch/Modules/Runtime/Extensions.cs index e6e65367b..e5093fa39 100644 --- a/src/modules/Elsa.Elasticsearch/Modules/Runtime/Extensions.cs +++ b/src/modules/Elsa.Elasticsearch/Modules/Runtime/Extensions.cs @@ -8,9 +8,14 @@ public static class Extensions /// /// Configures the to use the . /// - public static ExecutionLogRecordFeature UseElasticsearch(this ExecutionLogRecordFeature feature, ElasticsearchOptions options, Action? configure = default) + public static ExecutionLogRecordFeature UseElasticsearch(this ExecutionLogRecordFeature feature, ElasticsearchOptions options, IDictionary? indexConfig = default, Action? configure = default) { - configure += f => f.Options = options; + configure += f => + { + f.Options = options; + f.IndexConfig = indexConfig ?? new Dictionary(); + }; + feature.Module.Configure(configure); return feature; } diff --git a/src/modules/Elsa.Elasticsearch/Services/IElasticConfiguration.cs b/src/modules/Elsa.Elasticsearch/Services/IElasticConfiguration.cs index 8056f5823..d167fb966 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, ElasticsearchOptions options); + void Apply(ConnectionSettings connectionSettings, IDictionary indexConfig); - public static string ResolveIndexName(ElasticsearchOptions options, string indexName) + public static string ResolveIndexName(IDictionary indices, string? indexName = default) { - var indexNameFromConfig = options.Indices[typeof(T).Name]; + var indexNameFromConfig = indices[typeof(T).Name]; return string.IsNullOrWhiteSpace(indexNameFromConfig) ? indexName : indexNameFromConfig; } } \ No newline at end of file