DescribeSystemUseCase.cs 830 B

12345678910111213141516171819202122232425262728293031323334
  1. using RackPeek.Domain.Helpers;
  2. namespace RackPeek.Domain.Resources.SystemResources.UseCases;
  3. public record SystemDescription(
  4. string Name,
  5. string? Type,
  6. string? Os,
  7. int Cores,
  8. int RamGb,
  9. int TotalStorageGb,
  10. string? RunsOn
  11. );
  12. public class DescribeSystemUseCase(ISystemRepository repository) : IUseCase
  13. {
  14. public async Task<SystemDescription?> ExecuteAsync(string name)
  15. {
  16. ThrowIfInvalid.ResourceName(name);
  17. var system = await repository.GetByNameAsync(name);
  18. if (system is null)
  19. return null;
  20. return new SystemDescription(
  21. system.Name,
  22. system.Type,
  23. system.Os,
  24. system.Cores ?? 0,
  25. system.Ram ?? 0,
  26. system.Drives?.Sum(d => d.Size) ?? 0,
  27. system.RunsOn
  28. );
  29. }
  30. }