AddGpuUseCase.cs 751 B

123456789101112131415161718192021222324252627282930
  1. using RackPeek.Domain.Helpers;
  2. using RackPeek.Domain.Resources.Hardware.Models;
  3. namespace RackPeek.Domain.Resources.Hardware.Servers.Gpus;
  4. public class AddGpuUseCase(IHardwareRepository repository) : IUseCase
  5. {
  6. public async Task ExecuteAsync(
  7. string serverName,
  8. string model,
  9. int vram)
  10. {
  11. ThrowIfInvalid.ResourceName(serverName);
  12. var hardware = await repository.GetByNameAsync(serverName);
  13. if (hardware is not Server server)
  14. throw new NotFoundException($"Server '{serverName}' not found.");
  15. server.Gpus ??= [];
  16. server.Gpus.Add(new Gpu
  17. {
  18. Model = model,
  19. Vram = vram
  20. });
  21. await repository.UpdateAsync(server);
  22. }
  23. }