using System;
using Svrnty.CQRS.Events.Abstractions.Sagas;
namespace Svrnty.CQRS.Events.Sagas;
///
/// Context for saga execution.
///
public sealed class SagaContext : ISagaContext
{
public SagaContext(ISaga saga, SagaState state, ISagaData data)
{
Saga = saga ?? throw new ArgumentNullException(nameof(saga));
State = state;
Data = data ?? throw new ArgumentNullException(nameof(data));
}
///
public ISaga Saga { get; }
///
public SagaState State { get; internal set; }
///
public ISagaData Data { get; }
///
public T? Get(string key) => Data.Get(key);
///
public void Set(string key, T value) => Data.Set(key, value);
///
public bool Contains(string key) => Data.Contains(key);
}