public RuntimeSagaInfo( Type sagaDataType, RetrieveVersionSpecificJsonSettings versionSpecificSettings, Type sagaType, JsonSerializer jsonSerializer, Func <TextReader, JsonReader> readerCreator, Func <TextWriter, JsonWriter> writerCreator, string tablePrefix, SqlDialect sqlDialect, Func <string, string> nameFilter) { this.sagaDataType = sagaDataType; if (versionSpecificSettings != null) { deserializers = new ConcurrentDictionary <Version, JsonSerializer>(); } this.versionSpecificSettings = versionSpecificSettings; SagaType = sagaType; this.jsonSerializer = jsonSerializer; this.readerCreator = readerCreator; this.writerCreator = writerCreator; this.sqlDialect = sqlDialect; CurrentVersion = sagaDataType.Assembly.GetFileVersion(); ValidateIsSqlSaga(); var sqlSagaAttributeData = SqlSagaTypeDataReader.GetTypeData(sagaType); var tableSuffix = nameFilter(sqlSagaAttributeData.TableSuffix); TableName = sqlDialect.GetSagaTableName(tablePrefix, tableSuffix); CompleteCommand = sqlDialect.BuildCompleteCommand(TableName); SelectFromCommandBuilder = sqlDialect.BuildSelectFromCommand(TableName); GetBySagaIdCommand = sqlDialect.BuildGetBySagaIdCommand(TableName); SaveCommand = sqlDialect.BuildSaveCommand(sqlSagaAttributeData.CorrelationProperty, sqlSagaAttributeData.TransitionalCorrelationProperty, TableName); UpdateCommand = sqlDialect.BuildUpdateCommand(sqlSagaAttributeData.TransitionalCorrelationProperty, TableName); CorrelationProperty = sqlSagaAttributeData.CorrelationProperty; HasCorrelationProperty = CorrelationProperty != null; if (HasCorrelationProperty) { GetByCorrelationPropertyCommand = sqlDialect.BuildGetByPropertyCommand(sqlSagaAttributeData.CorrelationProperty, TableName); } TransitionalCorrelationProperty = sqlSagaAttributeData.TransitionalCorrelationProperty; HasTransitionalCorrelationProperty = TransitionalCorrelationProperty != null; if (HasTransitionalCorrelationProperty) { TransitionalAccessor = sagaDataType.GetPropertyAccessor <IContainSagaData>(TransitionalCorrelationProperty); } }
internal override string BuildGetByPropertyCommand(string correlationProperty, string tableName) { return(impl.BuildGetByPropertyCommand(correlationProperty, tableName)); }