55 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|