AddDesktopUseCase.cs 785 B

12345678910111213141516171819202122232425262728
  1. using RackPeek.Domain.Helpers;
  2. using RackPeek.Domain.Resources.Hardware.Models;
  3. namespace RackPeek.Domain.Resources.Hardware.Desktops;
  4. public class AddDesktopUseCase(IHardwareRepository repository) : IUseCase
  5. {
  6. public async Task ExecuteAsync(string name)
  7. {
  8. ThrowIfInvalid.ResourceName(name);
  9. var existing = await repository.GetByNameAsync(name);
  10. if (existing != null)
  11. throw new ConflictException($"Desktop '{name}' already exists.");
  12. var desktop = new Desktop
  13. {
  14. Name = name,
  15. Cpus = new List<Cpu>(),
  16. Drives = new List<Drive>(),
  17. Nics = new List<Nic>(),
  18. Gpus = new List<Gpu>(),
  19. Ram = null
  20. };
  21. await repository.AddAsync(desktop);
  22. }
  23. }