DescribeLaptopUseCase.cs 862 B

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