1
0
voyager-api/ScrapperAPI/Controllers/ScrapeMonitoringController.cs

55 lines
1.3 KiB
C#

using Microsoft.AspNetCore.Mvc;
using ScrapperAPI.Interfaces;
namespace ScrapperAPI.Controllers;
[ApiController]
[Route("scrap")]
public sealed class ScrapeMonitoringController : ControllerBase
{
private readonly IScrapeCoordinator _coord;
private readonly IQueueRepository _queue;
public ScrapeMonitoringController(
IScrapeCoordinator coord,
IQueueRepository queue)
{
_coord = coord;
_queue = queue;
}
[HttpGet("running-sessions")]
public async Task<IActionResult> ListRunningSessions(CancellationToken ct)
{
var running = _coord.ListRunningSessions();
// Opcional: enriquecer com progresso do banco
var result = new List<object>();
foreach (var r in running)
{
var counts = await _queue.GetCountsAsync(r.SessionId, ct);
result.Add(new
{
r.SessionId,
r.IsRunning,
r.StopRequested,
r.CurrentQueueId,
r.CurrentUrl,
r.CurrentStartedAt,
Progress = new
{
counts.Total,
counts.Pending,
counts.Processing,
counts.Done,
counts.Failed
}
});
}
return Ok(result);
}
}