Skip to content

Commit

Permalink
Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
grkngrn committed Jan 6, 2023
1 parent fcfd187 commit eebd24a
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 15 deletions.
3 changes: 2 additions & 1 deletion src/modules/Elsa.Elasticsearch/Common/ElasticFeatureBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public ElasticFeatureBase(IModule module) : base(module)
}

internal ElasticsearchOptions Options { get; set; } = new();
internal IDictionary<string,string> IndexConfig { get; set; }

public override void Apply()
{
Expand All @@ -29,7 +30,7 @@ private ConnectionSettings GetSettings()
{
return new ConnectionSettings(new Uri(Options.Endpoint))
.ConfigureAuthentication(Options)
.ConfigureMapping(Options);
.ConfigureMapping(IndexConfig);
}

protected void AddStore<TModel, TStore>() where TModel : class where TStore : class
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public static ConnectionSettings ConfigureAuthentication(this ConnectionSettings
return settings;
}

public static ConnectionSettings ConfigureMapping(this ConnectionSettings settings, ElasticsearchOptions options)
public static ConnectionSettings ConfigureMapping(this ConnectionSettings settings, IDictionary<string,string> indexConfig)
{
var configs = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
Expand All @@ -30,7 +30,7 @@ public static ConnectionSettings ConfigureMapping(this ConnectionSettings settin
foreach (var config in configs)
{
var configInstance = (IElasticConfiguration)Activator.CreateInstance(config)!;
configInstance.Apply(settings, options);
configInstance.Apply(settings, indexConfig);
}

return settings;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,14 @@ public static class Extensions
/// <summary>
/// Configures the <see cref="WorkflowInstanceFeature"/> to use the <see cref="ElasticWorkflowInstanceFeature"/>.
/// </summary>
public static WorkflowInstanceFeature UseElasticsearch(this WorkflowInstanceFeature feature, ElasticsearchOptions options, Action<ElasticWorkflowInstanceFeature>? configure = default)
public static WorkflowInstanceFeature UseElasticsearch(this WorkflowInstanceFeature feature, ElasticsearchOptions options, IDictionary<string,string>? indexConfig = default, Action<ElasticWorkflowInstanceFeature>? configure = default)
{
configure += f => f.Options = options;
configure += f =>
{
f.Options = options;
f.IndexConfig = indexConfig ?? new Dictionary<string, string>();
};

feature.Module.Configure(configure);
return feature;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<string,string> indexConfig)
{
connectionSettings.DefaultMappingFor<WorkflowInstance>(m =>
m.IndexName(IElasticConfiguration.ResolveIndexName<WorkflowInstance>(options, IndexName)));
m.IndexName(IElasticConfiguration.ResolveIndexName<WorkflowInstance>(indexConfig, IndexName)));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<string,string> indexConfig)
{
connectionSettings.DefaultMappingFor<WorkflowExecutionLogRecord>(m =>
m.IndexName(IElasticConfiguration.ResolveIndexName<WorkflowExecutionLogRecord>(options, IndexName)));
m.IndexName(IElasticConfiguration.ResolveIndexName<WorkflowExecutionLogRecord>(indexConfig, IndexName)));
}
}
9 changes: 7 additions & 2 deletions src/modules/Elsa.Elasticsearch/Modules/Runtime/Extensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,14 @@ public static class Extensions
/// <summary>
/// Configures the <see cref="ExecutionLogRecordFeature"/> to use the <see cref="ElasticExecutionLogRecordFeature"/>.
/// </summary>
public static ExecutionLogRecordFeature UseElasticsearch(this ExecutionLogRecordFeature feature, ElasticsearchOptions options, Action<ElasticExecutionLogRecordFeature>? configure = default)
public static ExecutionLogRecordFeature UseElasticsearch(this ExecutionLogRecordFeature feature, ElasticsearchOptions options, IDictionary<string,string>? indexConfig = default, Action<ElasticExecutionLogRecordFeature>? configure = default)
{
configure += f => f.Options = options;
configure += f =>
{
f.Options = options;
f.IndexConfig = indexConfig ?? new Dictionary<string, string>();
};

feature.Module.Configure(configure);
return feature;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ namespace Elsa.Elasticsearch.Services;

public interface IElasticConfiguration
{
void Apply(ConnectionSettings connectionSettings, ElasticsearchOptions options);
void Apply(ConnectionSettings connectionSettings, IDictionary<string,string> indexConfig);

public static string ResolveIndexName<T>(ElasticsearchOptions options, string indexName)
public static string ResolveIndexName<T>(IDictionary<string,string> indices, string? indexName = default)
{
var indexNameFromConfig = options.Indices[typeof(T).Name];
var indexNameFromConfig = indices[typeof(T).Name];
return string.IsNullOrWhiteSpace(indexNameFromConfig) ? indexName : indexNameFromConfig;
}
}

0 comments on commit eebd24a

Please sign in to comment.