UpdateDriveUseCase.cs 813 B

1234567891011121314151617181920212223
  1. using RackPeek.Domain.Helpers;
  2. using RackPeek.Domain.Resources.Hardware.Models;
  3. namespace RackPeek.Domain.Resources.Hardware.Servers.Drives;
  4. public class UpdateDriveUseCase(IHardwareRepository repository) : IUseCase
  5. {
  6. public async Task ExecuteAsync(string serverName, int index, string type, int size)
  7. {
  8. ThrowIfInvalid.ResourceName(serverName);
  9. var hardware = await repository.GetByNameAsync(serverName);
  10. if (hardware is not Server server) return;
  11. server.Drives ??= [];
  12. if (index < 0 || index >= server.Drives.Count)
  13. throw new ArgumentOutOfRangeException(nameof(index), "Drive index out of range.");
  14. var drive = server.Drives[index];
  15. drive.Type = type;
  16. drive.Size = size;
  17. await repository.UpdateAsync(server);
  18. }
  19. }