Read index names from appsettings
This commit is contained in:
parent
5a7231f5a2
commit
fcfd187b05
|
|
@ -29,7 +29,7 @@ public abstract class ElasticFeatureBase : FeatureBase
|
|||
{
|
||||
return new ConnectionSettings(new Uri(Options.Endpoint))
|
||||
.ConfigureAuthentication(Options)
|
||||
.ConfigureMapping();
|
||||
.ConfigureMapping(Options);
|
||||
}
|
||||
|
||||
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)
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -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<WorkflowInstance>(m =>
|
||||
m.IndexName(IElasticConfiguration.ResolveIndexName<WorkflowInstance>(IndexName)));
|
||||
m.IndexName(IElasticConfiguration.ResolveIndexName<WorkflowInstance>(options, IndexName)));
|
||||
}
|
||||
}
|
||||
|
|
@ -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<WorkflowExecutionLogRecord>(m =>
|
||||
m.IndexName(IElasticConfiguration.ResolveIndexName<WorkflowExecutionLogRecord>(IndexName)));
|
||||
m.IndexName(IElasticConfiguration.ResolveIndexName<WorkflowExecutionLogRecord>(options, IndexName)));
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Type, string> Indices = new()
|
||||
{
|
||||
{typeof(WorkflowInstance),"workflow-instances"},
|
||||
{typeof(WorkflowExecutionLogRecord),"execution-log-records"}
|
||||
};
|
||||
|
||||
public Dictionary<string, string> Indices { get; set; }
|
||||
public string Endpoint { get; set; }
|
||||
public string Username { get; set; }
|
||||
public string Password { get; set; }
|
||||
|
|
|
|||
|
|
@ -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<T>(string indexName)
|
||||
public static string ResolveIndexName<T>(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;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue