AddCpuUseCase.cs 905 B

1234567891011121314151617181920212223242526272829303132333435
  1. using RackPeek.Domain.Helpers;
  2. using RackPeek.Domain.Resources.Hardware.Models;
  3. namespace RackPeek.Domain.Resources.Hardware.Servers.Cpus;
  4. public class AddCpuUseCase(IHardwareRepository repository) : IUseCase
  5. {
  6. public async Task ExecuteAsync(
  7. string name,
  8. string? model,
  9. int? cores,
  10. int? threads)
  11. {
  12. // ToDo pass in properties as inputs, construct the entity in the usecase
  13. // ToDo validate / normalize all inputs
  14. name = Normalize.HardwareName(name);
  15. ThrowIfInvalid.ResourceName(name);
  16. var hardware = await repository.GetByNameAsync(name);
  17. if (hardware is not Server server) return;
  18. server.Cpus ??= [];
  19. server.Cpus.Add(new Cpu
  20. {
  21. Model = model,
  22. Cores = cores,
  23. Threads = threads
  24. });
  25. await repository.UpdateAsync(server);
  26. }
  27. }