From 6a9792bb5758567e5ee5cd4ff06b2266ab611b89 Mon Sep 17 00:00:00 2001 From: TekH Date: Mon, 13 Apr 2026 16:31:54 +0200 Subject: [PATCH] Refactor WorkerController to manage job state via API Removed endpoints for starting/stopping/restarting the Worker service. Controller now uses JobStateManager to get and set the state of specific jobs (e.g., FinalizeDocumentJob) through new GET and POST endpoints. Focus shifts from service lifecycle control to job state management. --- .../Controllers/WorkerController.cs | 43 +++++-------------- 1 file changed, 10 insertions(+), 33 deletions(-) diff --git a/EnvelopeGenerator.ServiceHost/Controllers/WorkerController.cs b/EnvelopeGenerator.ServiceHost/Controllers/WorkerController.cs index c3b97eb9..ad69c0b3 100644 --- a/EnvelopeGenerator.ServiceHost/Controllers/WorkerController.cs +++ b/EnvelopeGenerator.ServiceHost/Controllers/WorkerController.cs @@ -1,44 +1,21 @@ -using Microsoft.AspNetCore.Mvc; +using EnvelopeGenerator.ServiceHost.Jobs; +using Microsoft.AspNetCore.Mvc; namespace EnvelopeGenerator.ServiceHost.Controllers; [Route("api/[controller]")] [ApiController] -public class WorkerController(IEnumerable hostedServices, ILogger logger) : ControllerBase +public class WorkerController(JobStateManager jobStateManager) : ControllerBase { - private Worker? Worker => hostedServices.OfType().FirstOrDefault(); + private readonly JobStateManager _jobStateManager = jobStateManager; - [HttpPost("stop")] - public async Task Stop(CancellationToken cancel) + [HttpGet(nameof(FinalizeDocumentJob))] + public IActionResult GetStateOfFinalizeDocumentJob() => Ok(_jobStateManager.GetState()); + + [HttpPost(nameof(FinalizeDocumentJob))] + public IActionResult SetStateOfFinalizeDocumentJob([FromQuery] State state) { - if (Worker is null) - return NotFound(); - - logger.LogInformation("Stopping Worker via API request."); - await Worker.StopAsync(cancel); - return Ok(); - } - - [HttpPost("start")] - public async Task Start(CancellationToken cancel) - { - if (Worker is null) - return NotFound(); - - logger.LogInformation("Starting Worker via API request."); - await Worker.StartAsync(cancel); - return Ok(); - } - - [HttpPost("restart")] - public async Task Restart(CancellationToken cancel) - { - if (Worker is null) - return NotFound(); - - logger.LogInformation("Restarting Worker via API request."); - await Worker.StopAsync(cancel); - await Worker.StartAsync(cancel); + _jobStateManager.SetState(state); return Ok(); } } \ No newline at end of file