40 lines
1.2 KiB
C#
40 lines
1.2 KiB
C#
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using MoonlightServers.Api.Infrastructure.Database;
|
|
using MoonlightServers.Api.Infrastructure.Database.Entities;
|
|
using MoonlightServers.Shared;
|
|
using MoonlightServers.Shared.Admin.Nodes;
|
|
|
|
namespace MoonlightServers.Api.Admin.Nodes;
|
|
|
|
[ApiController]
|
|
[Authorize(Policy = Permissions.Nodes.View)]
|
|
[Route("api/admin/servers/nodes/{id:int}/statistics")]
|
|
public class StatisticsController : Controller
|
|
{
|
|
private readonly NodeService NodeService;
|
|
private readonly DatabaseRepository<Node> NodeRepository;
|
|
|
|
public StatisticsController(NodeService nodeService, DatabaseRepository<Node> nodeRepository)
|
|
{
|
|
NodeService = nodeService;
|
|
NodeRepository = nodeRepository;
|
|
}
|
|
|
|
[HttpGet]
|
|
public async Task<ActionResult<NodeStatisticsDto>> GetAsync([FromRoute] int id)
|
|
{
|
|
var node = await NodeRepository
|
|
.Query()
|
|
.FirstOrDefaultAsync(x => x.Id == id);
|
|
|
|
if (node == null)
|
|
return Problem("No node with this id found", statusCode: 404);
|
|
|
|
var statistics = await NodeService.GetStatisticsAsync(node);
|
|
var dto = NodeMapper.ToDto(statistics);
|
|
|
|
return dto;
|
|
}
|
|
} |