using DbFirst.Application.Catalogs; using Microsoft.AspNetCore.Mvc; namespace DbFirst.API.Controllers; [ApiController] [Route("api/[controller]")] public class CatalogsController : ControllerBase { private readonly ICatalogService _service; public CatalogsController(ICatalogService service) { _service = service; } [HttpGet] public async Task>> GetAll(CancellationToken cancellationToken) { var result = await _service.GetAllAsync(cancellationToken); return Ok(result); } [HttpGet("{id:int}")] public async Task> GetById(int id, CancellationToken cancellationToken) { var result = await _service.GetByIdAsync(id, cancellationToken); if (result == null) { return NotFound(); } return Ok(result); } [HttpPost] public async Task> Create(CatalogWriteDto dto, CancellationToken cancellationToken) { var created = await _service.CreateAsync(dto, cancellationToken); return CreatedAtAction(nameof(GetById), new { id = created.Guid }, created); } [HttpPut("{id:int}")] public async Task> Update(int id, CatalogWriteDto dto, CancellationToken cancellationToken) { var updated = await _service.UpdateAsync(id, dto, cancellationToken); if (updated == null) { return NotFound(); } return Ok(updated); } [HttpDelete("{id:int}")] public async Task Delete(int id, CancellationToken cancellationToken) { var deleted = await _service.DeleteAsync(id, cancellationToken); if (!deleted) { return NotFound(); } return NoContent(); } }