Refactor
This commit is contained in:
parent
fcfd187b05
commit
eebd24a8d3
|
|
@ -16,6 +16,7 @@ public abstract class ElasticFeatureBase : FeatureBase
|
|||
}
|
||||
|
||||
internal ElasticsearchOptions Options { get; set; } = new();
|
||||
internal IDictionary<string,string> 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<TModel, TStore>() where TModel : class where TStore : class
|
||||
|
|
|
|||
|
|
@ -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<string,string> 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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)));
|
||||
}
|
||||
}
|
||||
|
|
@ -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)));
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue