#nullable enable

namespace PlanTempus.Core.Outbox;

public class OutboxMessage
{
	public Guid Id { get; set; }
	public required string Type { get; set; }
	public required object Payload { get; set; }
	public string Status { get; set; } = "pending";
	public DateTime CreatedAt { get; set; }
	public DateTime? ProcessedAt { get; set; }
	public int RetryCount { get; set; }
	public string? ErrorMessage { get; set; }
}

public static class OutboxMessageTypes
{
	public const string VerificationEmail = "verification_email";
}

public class VerificationEmailPayload
{
	public required string Email { get; set; }
	public required string UserName { get; set; }
	public required string Token { get; set; }
}
