DescribeDesktopUseCase.cs 974 B

12345678910111213141516171819202122232425262728293031323334353637
  1. using RackPeek.Domain.Resources.Hardware.Models;
  2. namespace RackPeek.Domain.Resources.Hardware.Desktop;
  3. public record DesktopDescription(
  4. string Name,
  5. string? Model,
  6. int CpuCount,
  7. string? RamSummary,
  8. int DriveCount,
  9. int NicCount,
  10. int GpuCount
  11. );
  12. public class DescribeDesktopUseCase(IHardwareRepository repository)
  13. {
  14. public async Task<DesktopDescription?> ExecuteAsync(string name)
  15. {
  16. var desktop = await repository.GetByNameAsync(name) as Models.Desktop;
  17. if (desktop == null)
  18. return null;
  19. var ramSummary = desktop.Ram == null
  20. ? "None"
  21. : $"{desktop.Ram.Size} GB @ {desktop.Ram.Mts} MT/s";
  22. return new DesktopDescription(
  23. desktop.Name,
  24. desktop.Model,
  25. desktop.Cpus?.Count ?? 0,
  26. ramSummary,
  27. desktop.Drives?.Count ?? 0,
  28. desktop.Nics?.Count ?? 0,
  29. desktop.Gpus?.Count ?? 0
  30. );
  31. }
  32. }