DescribeLaptopUseCase.cs 937 B

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