public void Run(SettingsHolder settings)
{
if (!settings.TryGet("PersistenceDefinitions", out List <EnabledPersistence> definitions))
{
return;
}
var enabledPersistences = PersistenceStorageMerger.Merge(definitions, settings);
ValidateSagaAndOutboxUseSamePersistence(enabledPersistences, settings);
var resultingSupportedStorages = new List <Type>();
var diagnostics = new Dictionary <string, object>();
foreach (var definition in enabledPersistences)
{
var persistenceDefinition = definition.DefinitionType.Construct <PersistenceDefinition>();
persistenceDefinition.ApplyDefaults(settings);
foreach (var storageType in definition.SelectedStorages)
{
Logger.DebugFormat("Activating persistence '{0}' to provide storage for '{1}' storage.", definition.DefinitionType.Name, storageType);
persistenceDefinition.ApplyActionForStorage(storageType, settings);
resultingSupportedStorages.Add(storageType);
diagnostics.Add(storageType.Name, new
{
Type = definition.DefinitionType.FullName,
Version = FileVersionRetriever.GetFileVersion(definition.DefinitionType)
});
}
}
settings.Set("ResultingSupportedStorages", resultingSupportedStorages);
settings.AddStartupDiagnosticsSection("Persistence", diagnostics);
}