AddSystemDriveUseCase.cs 910 B

1234567891011121314151617181920212223242526272829
  1. using System.ComponentModel.DataAnnotations;
  2. using RackPeek.Domain.Helpers;
  3. using RackPeek.Domain.Resources.Hardware.Models;
  4. using RackPeek.Domain.Resources.SystemResources;
  5. namespace RackPeek.Domain.Resources.SystemResources.UseCases;
  6. public class AddSystemDriveUseCase(ISystemRepository repository) : IUseCase
  7. {
  8. public async Task ExecuteAsync(string systemName, string DriveType, int size)
  9. {
  10. ThrowIfInvalid.ResourceName(systemName);
  11. ThrowIfInvalid.ResourceName(DriveType);
  12. ThrowIfInvalid.DriveSize(size);
  13. var system = await repository.GetByNameAsync(systemName)
  14. ?? throw new NotFoundException($"System '{systemName}' not found.");
  15. system.Drives ??= new List<Drive>();
  16. system.Drives.Add(new Drive
  17. {
  18. Type = DriveType,
  19. Size = size
  20. });
  21. await repository.UpdateAsync(system);
  22. }
  23. }