RemoveNicUseCase.cs 864 B

12345678910111213141516171819202122232425262728
  1. using System.ComponentModel.DataAnnotations;
  2. using RackPeek.Domain.Helpers;
  3. using RackPeek.Domain.Persistence;
  4. using RackPeek.Domain.Resources.Models;
  5. namespace RackPeek.Domain.Resources.Hardware.Servers.Nics;
  6. public class RemoveNicUseCase(IResourceCollection repository) : IUseCase
  7. {
  8. public async Task ExecuteAsync(string name, int index)
  9. {
  10. name = Normalize.HardwareName(name);
  11. ThrowIfInvalid.ResourceName(name);
  12. var hardware = await repository.GetByNameAsync(name);
  13. if (hardware is not Server server)
  14. throw new NotFoundException($"Server: '{name}' not found.");
  15. server.Nics ??= [];
  16. if (index < 0 || index >= server.Nics.Count)
  17. throw new ValidationException("NIC index out of range.");
  18. server.Nics.RemoveAt(index);
  19. await repository.UpdateAsync(server);
  20. }
  21. }