RemoveSystemDriveUseCase.cs 728 B

123456789101112131415161718192021
  1. using RackPeek.Domain.Helpers;
  2. namespace RackPeek.Domain.Resources.SystemResources.UseCases;
  3. public class RemoveSystemDriveUseCase(ISystemRepository repository) : IUseCase
  4. {
  5. public async Task ExecuteAsync(string systemName, int index)
  6. {
  7. ThrowIfInvalid.ResourceName(systemName);
  8. var system = await repository.GetByNameAsync(systemName)
  9. ?? throw new NotFoundException($"System '{systemName}' not found.");
  10. if (system.Drives == null || index < 0 || index >= system.Drives.Count)
  11. throw new NotFoundException($"Drive index {index} not found on system '{systemName}'.");
  12. system.Drives.RemoveAt(index);
  13. await repository.UpdateAsync(system);
  14. }
  15. }