using Microsoft.AspNetCore.Mvc; using SeriLoog.Services; namespace SeriLoog.Controllers; [ApiController] [Route("api/[controller]")] public sealed class LogsController(LogQueryService queryService) : ControllerBase { [HttpGet] public async Task Get( [FromQuery] int page = 1, [FromQuery] int pageSize = 25, [FromQuery] string? level = null, [FromQuery] string? search = null, [FromQuery] DateTimeOffset? from = null, [FromQuery] DateTimeOffset? to = null, [FromQuery] string source = "mongo", CancellationToken ct = default) { var levels = string.IsNullOrWhiteSpace(level) ? null : level.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries); var query = new LogQuery { Page = page, PageSize = pageSize, Levels = levels, Search = search, From = from, To = to, Source = source }; var result = await queryService.QueryAsync(query, ct); return Ok(result); } [HttpGet("levels")] public IActionResult Levels() => Ok(new[] { "Verbose", "Debug", "Information", "Warning", "Error", "Fatal" }); }