4
0

SystemReportUseCase.cs 864 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. using RackPeek.Domain.Resources.SystemResources;
  2. namespace RackPeek.Domain.Resources.Services.UseCases;
  3. public record ServiceReport(
  4. IReadOnlyList<ServiceReportRow> Services
  5. );
  6. public record ServiceReportRow(
  7. string Name,
  8. string? Ip,
  9. int? Port,
  10. string? Protocol,
  11. string? Url,
  12. string? RunsOn
  13. );
  14. public class ServiceReportUseCase(IServiceRepository repository)
  15. {
  16. public async Task<ServiceReport> ExecuteAsync()
  17. {
  18. var services = await repository.GetAllAsync();
  19. var rows = services.Select(s =>
  20. {
  21. return new ServiceReportRow(
  22. s.Name,
  23. s.Network?.Ip,
  24. s.Network?.Port,
  25. s.Network?.Protocol,
  26. s.Network?.Url,
  27. s.RunsOn
  28. );
  29. }).ToList();
  30. return new ServiceReport(rows);
  31. }
  32. }