public override async Task Execute() { var sagaId = sagaData.Id; var sagaManifest = sagaManifests.GetForEntityType(sagaData.GetType()); var sagaFile = await SagaStorageFile.Create(sagaId, sagaManifest) .ConfigureAwait(false); sagaFiles.RegisterSagaFile(sagaFile, sagaId, sagaManifest.SagaEntityType); await sagaFile.Write(sagaData) .ConfigureAwait(false); }
async Task <SagaStorageFile> Open(Guid sagaId, Type entityType, CancellationToken cancellationToken) { var sagaManifest = sagaManifests.GetForEntityType(entityType); var sagaStorageFile = await SagaStorageFile.Open(sagaId, sagaManifest, cancellationToken) .ConfigureAwait(false); if (sagaStorageFile != null) { sagaFiles.RegisterSagaFile(sagaStorageFile, sagaId, sagaManifest.SagaEntityType); } return(sagaStorageFile); }
public static void RegisterSagaFile(this Dictionary <string, SagaStorageFile> sagaFiles, SagaStorageFile sagaStorageFile, Guid sagaId, Type sagaDataType) { sagaFiles[$"{sagaDataType.FullName}{sagaId}"] = sagaStorageFile; }