// все про категории using DEMO.Data; // база using DEMO.Models; // категории using Microsoft.AspNetCore.Mvc; // контроллер using Microsoft.EntityFrameworkCore; // база namespace DEMO.Controllers; [ApiController] // это api [Route("api/[controller]")] // адрес будет api/categories public class CategoriesController : ControllerBase { private readonly AppDbContext _context; // база // запоминаю базу public CategoriesController(AppDbContext context) { _context = context; } // отдать все категории [HttpGet] public async Task GetCategories() { var categories = await _context.Categories.ToListAsync(); // беру все return Ok(categories); // отдаю } // добавить категорию [HttpPost] public async Task CreateCategory(Category category) // приходит название { category.Name = (category.Name ?? "").Trim(); // убираю пробелы if (category.Name.Length < 2) return BadRequest("Название слишком короткое, надо минимум 2 буквы."); _context.Categories.Add(category); // добавляю await _context.SaveChangesAsync(); // сохраняю return Ok(category); } // изменить категорию [HttpPut("{id}")] public async Task UpdateCategory(int id, Category category) { var existingCategory = await _context.Categories.FindAsync(id); // ищу старую if (existingCategory == null) return NotFound(); // нет такой category.Name = (category.Name ?? "").Trim(); if (category.Name.Length < 2) return BadRequest("Название слишком короткое, надо минимум 2 буквы."); existingCategory.Name = category.Name; // меняю название await _context.SaveChangesAsync(); // сохраняю return Ok(existingCategory); } // удалить категорию [HttpDelete("{id}")] public async Task DeleteCategory(int id) { var category = await _context.Categories.FindAsync(id); // ищу if (category == null) return NotFound(); _context.Categories.Remove(category); // удаляю await _context.SaveChangesAsync(); // сохраняю return NoContent(); } }