GetSystemServiceTreeUseCase.cs 781 B

123456789101112131415161718192021
  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) throw new NotFoundException($"System '{name}' not found.");
  15. var services = await serviceRepository.GetBySystemHostAsync(system.Name);
  16. return new SystemDependencyTree(system, services);
  17. }
  18. }