public async Task Save(IContainSagaData sagaData, SagaCorrelationProperty correlationProperty, SynchronizedStorageSession session, ContextBag context) { var documentSession = session.RavenSession(); if (sagaData == null) { return; } var container = new SagaDataContainer { Id = DocumentIdForSagaData(documentSession, sagaData), Data = sagaData }; if (correlationProperty == null) { return; } container.IdentityDocId = SagaUniqueIdentity.FormatId(sagaData.GetType(), correlationProperty.Name, correlationProperty.Value); await documentSession.StoreAsync(container, string.Empty, container.Id).ConfigureAwait(false); await documentSession.StoreAsync(new SagaUniqueIdentity { Id = container.IdentityDocId, SagaId = sagaData.Id, UniqueValue = correlationProperty.Value, SagaDocId = container.Id }, changeVector : string.Empty, id : container.IdentityDocId).ConfigureAwait(false); }
public async Task Save(IContainSagaData sagaData, SagaCorrelationProperty correlationProperty, SynchronizedStorageSession session, ContextBag context, CancellationToken cancellationToken = default) { var documentSession = session.RavenSession(); if (sagaData == null) { return; } if (correlationProperty == null) { return; } var container = new SagaDataContainer { Id = DocumentIdForSagaData(documentSession, sagaData), Data = sagaData, IdentityDocId = SagaUniqueIdentity.FormatId(sagaData.GetType(), correlationProperty.Name, correlationProperty.Value), }; await documentSession.StoreAsync(container, string.Empty, container.Id, cancellationToken).ConfigureAwait(false); documentSession.StoreSchemaVersionInMetadata(container); var sagaUniqueIdentity = new SagaUniqueIdentity { Id = container.IdentityDocId, SagaId = sagaData.Id, UniqueValue = correlationProperty.Value, SagaDocId = container.Id }; await documentSession.StoreAsync(sagaUniqueIdentity, changeVector : string.Empty, id : container.IdentityDocId, token : cancellationToken).ConfigureAwait(false); documentSession.StoreSchemaVersionInMetadata(sagaUniqueIdentity); }
public static void StoreSchemaVersionInMetadata(this IAsyncDocumentSession session, SagaDataContainer entity) { var metadata = session.Advanced.GetMetadataFor(entity); metadata[SagaDataContainerSchemaVersionMetadataKey] = SagaDataContainer.SchemaVersion; }