From c25f59a4b44be6f3a682794a828ecbfb99483042 Mon Sep 17 00:00:00 2001 From: gamer147 Date: Fri, 30 Jan 2026 16:32:01 -0500 Subject: [PATCH] [FA-misc] Add IJobStatusUpdate event contract and publishing helper --- .../Contracts/Events/IJobStatusUpdate.cs | 23 +++++++++++++++++++ .../Extensions/JobStatusPublisher.cs | 20 ++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 FictionArchive.Service.Shared/Contracts/Events/IJobStatusUpdate.cs create mode 100644 FictionArchive.Service.Shared/Extensions/JobStatusPublisher.cs diff --git a/FictionArchive.Service.Shared/Contracts/Events/IJobStatusUpdate.cs b/FictionArchive.Service.Shared/Contracts/Events/IJobStatusUpdate.cs new file mode 100644 index 0000000..54db073 --- /dev/null +++ b/FictionArchive.Service.Shared/Contracts/Events/IJobStatusUpdate.cs @@ -0,0 +1,23 @@ +using FictionArchive.Common.Enums; + +namespace FictionArchive.Service.Shared.Contracts.Events; + +public interface IJobStatusUpdate +{ + Guid JobId { get; } + Guid? ParentJobId { get; } + string JobType { get; } + string DisplayName { get; } + JobStatus Status { get; } + string? ErrorMessage { get; } + Dictionary? Metadata { get; } +} + +public record JobStatusUpdate( + Guid JobId, + Guid? ParentJobId, + string JobType, + string DisplayName, + JobStatus Status, + string? ErrorMessage, + Dictionary? Metadata) : IJobStatusUpdate; diff --git a/FictionArchive.Service.Shared/Extensions/JobStatusPublisher.cs b/FictionArchive.Service.Shared/Extensions/JobStatusPublisher.cs new file mode 100644 index 0000000..3b44d7e --- /dev/null +++ b/FictionArchive.Service.Shared/Extensions/JobStatusPublisher.cs @@ -0,0 +1,20 @@ +using FictionArchive.Common.Enums; +using FictionArchive.Service.Shared.Contracts.Events; +using MassTransit; + +namespace FictionArchive.Service.Shared.Extensions; + +public static class JobStatusPublisher +{ + public static Task ReportJobStatus( + this IPublishEndpoint endpoint, + Guid jobId, + string jobType, + string displayName, + JobStatus status, + Guid? parentJobId = null, + string? errorMessage = null, + Dictionary? metadata = null) + => endpoint.Publish(new JobStatusUpdate( + jobId, parentJobId, jobType, displayName, status, errorMessage, metadata)); +}