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.
This commit is contained in:
2026-04-13 16:31:54 +02:00
parent 6954a86358
commit 6a9792bb57

View File

@@ -1,44 +1,21 @@
using Microsoft.AspNetCore.Mvc; using EnvelopeGenerator.ServiceHost.Jobs;
using Microsoft.AspNetCore.Mvc;
namespace EnvelopeGenerator.ServiceHost.Controllers; namespace EnvelopeGenerator.ServiceHost.Controllers;
[Route("api/[controller]")] [Route("api/[controller]")]
[ApiController] [ApiController]
public class WorkerController(IEnumerable<IHostedService> hostedServices, ILogger<WorkerController> logger) : ControllerBase public class WorkerController(JobStateManager jobStateManager) : ControllerBase
{ {
private Worker? Worker => hostedServices.OfType<Worker>().FirstOrDefault(); private readonly JobStateManager _jobStateManager = jobStateManager;
[HttpPost("stop")] [HttpGet(nameof(FinalizeDocumentJob))]
public async Task<IActionResult> Stop(CancellationToken cancel) public IActionResult GetStateOfFinalizeDocumentJob() => Ok(_jobStateManager.GetState<FinalizeDocumentJob>());
[HttpPost(nameof(FinalizeDocumentJob))]
public IActionResult SetStateOfFinalizeDocumentJob([FromQuery] State state)
{ {
if (Worker is null) _jobStateManager.SetState<FinalizeDocumentJob>(state);
return NotFound();
logger.LogInformation("Stopping Worker via API request.");
await Worker.StopAsync(cancel);
return Ok();
}
[HttpPost("start")]
public async Task<IActionResult> 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<IActionResult> Restart(CancellationToken cancel)
{
if (Worker is null)
return NotFound();
logger.LogInformation("Restarting Worker via API request.");
await Worker.StopAsync(cancel);
await Worker.StartAsync(cancel);
return Ok(); return Ok();
} }
} }