namespace StellaOps.Messaging;
///
/// Result of an enqueue operation.
///
public readonly struct EnqueueResult
{
///
/// Gets the message ID assigned by the queue.
///
public string MessageId { get; init; }
///
/// Gets whether the message was enqueued successfully.
///
public bool Success { get; init; }
///
/// Gets whether this was a duplicate message (idempotency).
///
public bool WasDuplicate { get; init; }
///
/// Gets the error message if the operation failed.
///
public string? Error { get; init; }
///
/// Creates a successful result.
///
public static EnqueueResult Succeeded(string messageId, bool wasDuplicate = false) =>
new() { MessageId = messageId, Success = true, WasDuplicate = wasDuplicate };
///
/// Creates a failed result.
///
public static EnqueueResult Failed(string error) =>
new() { Success = false, Error = error, MessageId = string.Empty };
///
/// Creates a duplicate result.
///
public static EnqueueResult Duplicate(string messageId) =>
new() { MessageId = messageId, Success = true, WasDuplicate = true };
}