public async Task Install(string identity) { var connectionBuilder = settings.GetConnectionBuilder(); var sqlVariant = settings.GetSqlVariant(); var schema = settings.GetSchema(); var scriptDirectory = ScriptLocation.FindScriptDirectory(sqlVariant); var tablePrefix = settings.GetTablePrefix(); ConfigValidation.ValidateTableSettings(sqlVariant, tablePrefix, schema); using (var connection = await connectionBuilder.OpenConnection().ConfigureAwait(false)) using (var transaction = connection.BeginTransaction()) { await InstallOutbox(scriptDirectory, connection, transaction, tablePrefix, schema, sqlVariant).ConfigureAwait(false); await InstallSagas(scriptDirectory, connection, transaction, tablePrefix, schema, sqlVariant).ConfigureAwait(false); await InstallSubscriptions(scriptDirectory, connection, transaction, tablePrefix, schema, sqlVariant).ConfigureAwait(false); await InstallTimeouts(scriptDirectory, connection, transaction, tablePrefix, schema, sqlVariant).ConfigureAwait(false); transaction.Commit(); } }
static SagaInfoCache BuildSagaInfoCache(SqlDialect sqlDialect, ReadOnlySettings settings) { var jsonSerializerSettings = SagaSettings.GetJsonSerializerSettings(settings); var jsonSerializer = BuildJsonSerializer(jsonSerializerSettings); sqlDialect.ValidateJsonSettings(jsonSerializer); var readerCreator = SagaSettings.GetReaderCreator(settings); if (readerCreator == null) { readerCreator = reader => new JsonTextReader(reader); } var writerCreator = SagaSettings.GetWriterCreator(settings); if (writerCreator == null) { writerCreator = writer => new JsonTextWriter(writer); } var nameFilter = SagaSettings.GetNameFilter(settings); if (nameFilter == null) { nameFilter = sagaName => sagaName; } var versionDeserializeBuilder = SagaSettings.GetVersionSettings(settings); var tablePrefix = settings.GetTablePrefix(); return(new SagaInfoCache( versionSpecificSettings: versionDeserializeBuilder, jsonSerializer: jsonSerializer, readerCreator: readerCreator, writerCreator: writerCreator, tablePrefix: tablePrefix, sqlDialect: sqlDialect, metadataCollection: settings.Get <SagaMetadataCollection>(), nameFilter: nameFilter)); }