GetServerSystemTreeUseCase.cs 868 B

12345678910111213141516171819202122232425
  1. using RackPeek.Domain.Resources.Hardware.Models;
  2. using RackPeek.Domain.Resources.SystemResources;
  3. namespace RackPeek.Domain.Resources.Hardware.Servers;
  4. public class GetServerSystemTreeUseCase(
  5. IHardwareRepository hardwareRepository,
  6. ISystemRepository systemRepository)
  7. {
  8. public async Task<HardwareDependencyTree?> ExecuteAsync(string hardwareName)
  9. {
  10. var server = await hardwareRepository.GetByNameAsync(hardwareName) as Server;
  11. if (server is null) return null;
  12. var systems = await systemRepository.GetByPhysicalHostAsync(hardwareName);
  13. return new HardwareDependencyTree(server, systems);
  14. }
  15. }
  16. public sealed class HardwareDependencyTree(Server hardware, IReadOnlyList<SystemResource> systems)
  17. {
  18. public Server Hardware { get; } = hardware;
  19. public IReadOnlyList<SystemResource> Systems { get; } = systems;
  20. }