using Microsoft.AspNetCore.Mvc; using MoniteurBaie.DataApi.Interfaces.Repositories; using MoniteurBaie.DataModels; namespace MoniteurBaie.DataApi.Controllers; [ApiController] [Route("packets")] public class DataPacketsController : ControllerBase { private readonly ILogger _logger; private readonly IDataRepository _dataRepository; public DataPacketsController(ILogger logger, IDataRepository dataRepository) { _logger = logger; _dataRepository = dataRepository; } [HttpGet("{id}", Name = "GetDataPacket")] public async Task GetAsync(uint id) { var packet = await _dataRepository.GetAsync(id); return packet is null ? NotFound() : Ok(packet); } [HttpPost(Name = "CreateDataPacket")] public async Task CreateAsync(DataPacket packet) { var packetId = await _dataRepository.CreateAsync(packet); return CreatedAtRoute("GetDataPacket", new { id = packetId }, packet with { Id = packetId }); } [HttpDelete("{id}", Name = "DeleteDataPacket")] public async Task DeleteAsync(uint id) { var success = await _dataRepository.DeleteAsync(id); return success ? NoContent() : NotFound(); } [HttpGet("last", Name = "GetLastDataPackets")] public IActionResult GetLastAsync(int count) { return Ok(_dataRepository.GetLastAsync(count)); } [HttpGet("range", Name = "GetRangeDataPackets")] public IActionResult GetRangeAsync(DateTime fromInstant, DateTime toInstant) { return Ok(_dataRepository.GetRangeAsync(fromInstant, toInstant)); } [HttpPost("bulk", Name = "BulkCreateDataPackets")] public async Task BulkCreateAsync(IEnumerable packets) { await _dataRepository.BulkCreateAsync(packets); return Ok(); } }