GetSystemServiceTreeUseCase.cs 813 B

123456789101112131415161718192021222324
  1. using RackPeek.Domain.Helpers;
  2. using RackPeek.Domain.Resources.Hardware;
  3. using RackPeek.Domain.Resources.Services;
  4. namespace RackPeek.Domain.Resources.SystemResources.UseCases;
  5. public class GetSystemServiceTreeUseCase(
  6. ISystemRepository systemRepository,
  7. IServiceRepository serviceRepository) : IUseCase
  8. {
  9. public async Task<SystemDependencyTree> ExecuteAsync(string name)
  10. {
  11. name = Normalize.SystemName(name);
  12. ThrowIfInvalid.ResourceName(name);
  13. var system = await systemRepository.GetByNameAsync(name);
  14. if (system is null)
  15. {
  16. throw new NotFoundException($"System '{name}' not found.");
  17. }
  18. var services = await serviceRepository.GetBySystemHostAsync(system.Name);
  19. return new SystemDependencyTree(system, services);
  20. }
  21. }