feat(notification-outbox): add NotificationOutbox repository
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
namespace ScadaLink.Commons.Types.Notifications;
|
||||
|
||||
/// <summary>
|
||||
/// Point-in-time operational metrics for the central notification outbox,
|
||||
/// surfaced on the health dashboard.
|
||||
/// </summary>
|
||||
/// <param name="QueueDepth">Count of non-terminal rows (Pending + Retrying).</param>
|
||||
/// <param name="StuckCount">
|
||||
/// Count of non-terminal rows (Pending/Retrying) whose <c>CreatedAt</c> is older
|
||||
/// than the supplied stuck cutoff.
|
||||
/// </param>
|
||||
/// <param name="ParkedCount">Count of rows in the Parked status.</param>
|
||||
/// <param name="DeliveredLastInterval">
|
||||
/// Count of Delivered rows whose <c>DeliveredAt</c> is at or after the supplied
|
||||
/// "delivered since" timestamp.
|
||||
/// </param>
|
||||
/// <param name="OldestPendingAge">
|
||||
/// Age of the oldest non-terminal row (<c>now - min(CreatedAt)</c>), or <c>null</c>
|
||||
/// when there are no non-terminal rows.
|
||||
/// </param>
|
||||
public record NotificationKpiSnapshot(
|
||||
int QueueDepth,
|
||||
int StuckCount,
|
||||
int ParkedCount,
|
||||
int DeliveredLastInterval,
|
||||
TimeSpan? OldestPendingAge);
|
||||
@@ -0,0 +1,30 @@
|
||||
using ScadaLink.Commons.Types.Enums;
|
||||
|
||||
namespace ScadaLink.Commons.Types.Notifications;
|
||||
|
||||
/// <summary>
|
||||
/// Query filter for the central notification outbox. All members are optional;
|
||||
/// an unset member means "no constraint on that dimension".
|
||||
/// </summary>
|
||||
/// <param name="Status">Restrict to a single lifecycle status.</param>
|
||||
/// <param name="Type">Restrict to a single delivery channel.</param>
|
||||
/// <param name="SourceSiteId">Restrict to notifications originating at a given site.</param>
|
||||
/// <param name="ListName">Restrict to a single notification list.</param>
|
||||
/// <param name="SubjectKeyword">Substring matched against <c>Subject</c>.</param>
|
||||
/// <param name="StuckOnly">
|
||||
/// When <c>true</c>, restrict to non-terminal rows (Pending/Retrying) whose
|
||||
/// <c>CreatedAt</c> is older than <see cref="StuckCutoff"/>.
|
||||
/// </param>
|
||||
/// <param name="StuckCutoff">Rows with <c>CreatedAt</c> older than this count as stuck.</param>
|
||||
/// <param name="From">Inclusive lower bound on <c>CreatedAt</c>.</param>
|
||||
/// <param name="To">Inclusive upper bound on <c>CreatedAt</c>.</param>
|
||||
public record NotificationOutboxFilter(
|
||||
NotificationStatus? Status = null,
|
||||
NotificationType? Type = null,
|
||||
string? SourceSiteId = null,
|
||||
string? ListName = null,
|
||||
string? SubjectKeyword = null,
|
||||
bool StuckOnly = false,
|
||||
DateTimeOffset? StuckCutoff = null,
|
||||
DateTimeOffset? From = null,
|
||||
DateTimeOffset? To = null);
|
||||
Reference in New Issue
Block a user