56 lines
1.5 KiB
C#
56 lines
1.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Svrnty.CQRS.Sagas.Abstractions;
|
|
|
|
/// <summary>
|
|
/// Provides context information during saga step execution.
|
|
/// </summary>
|
|
public interface ISagaContext
|
|
{
|
|
/// <summary>
|
|
/// Unique identifier for this saga instance.
|
|
/// </summary>
|
|
Guid SagaId { get; }
|
|
|
|
/// <summary>
|
|
/// Correlation ID for tracing across services.
|
|
/// </summary>
|
|
Guid CorrelationId { get; }
|
|
|
|
/// <summary>
|
|
/// The fully qualified type name of the saga.
|
|
/// </summary>
|
|
string SagaType { get; }
|
|
|
|
/// <summary>
|
|
/// Index of the current step being executed.
|
|
/// </summary>
|
|
int CurrentStepIndex { get; }
|
|
|
|
/// <summary>
|
|
/// Name of the current step being executed.
|
|
/// </summary>
|
|
string CurrentStepName { get; }
|
|
|
|
/// <summary>
|
|
/// Results from completed steps, keyed by step name.
|
|
/// </summary>
|
|
IReadOnlyDictionary<string, object?> StepResults { get; }
|
|
|
|
/// <summary>
|
|
/// Gets a result from a previous step.
|
|
/// </summary>
|
|
/// <typeparam name="T">The expected result type.</typeparam>
|
|
/// <param name="stepName">The name of the step.</param>
|
|
/// <returns>The result, or default if not found.</returns>
|
|
T? GetStepResult<T>(string stepName);
|
|
|
|
/// <summary>
|
|
/// Sets a result for the current step (available to subsequent steps).
|
|
/// </summary>
|
|
/// <typeparam name="T">The result type.</typeparam>
|
|
/// <param name="result">The result value.</param>
|
|
void SetStepResult<T>(T result);
|
|
}
|