28 lines
1.0 KiB
C#
28 lines
1.0 KiB
C#
using System.Text.Json;
|
|
using Tiku.Domain.Common;
|
|
|
|
namespace Tiku.Domain.Learning;
|
|
|
|
public sealed class LearningOutboxMessage : TenantEntity
|
|
{
|
|
public string EventType { get; set; } = string.Empty;
|
|
public int SchemaVersion { get; set; } = 1;
|
|
public Guid AggregateId { get; set; }
|
|
public JsonElement Payload { get; set; } = JsonDefaults.Object();
|
|
public DateTimeOffset OccurredAt { get; set; } = DateTimeOffset.UtcNow;
|
|
public DateTimeOffset AvailableAt { get; set; } = DateTimeOffset.UtcNow;
|
|
public DateTimeOffset? ProcessedAt { get; set; }
|
|
public DateTimeOffset? DeadLetteredAt { get; set; }
|
|
public int AttemptCount { get; set; }
|
|
public string? LockedBy { get; set; }
|
|
public DateTimeOffset? LockExpiresAt { get; set; }
|
|
public string? LastError { get; set; }
|
|
}
|
|
|
|
public sealed class LearningProjectionReceipt : TenantEntity
|
|
{
|
|
public Guid OutboxMessageId { get; set; }
|
|
public string ProjectionName { get; set; } = string.Empty;
|
|
public DateTimeOffset ProcessedAt { get; set; } = DateTimeOffset.UtcNow;
|
|
}
|