GetSystemServiceTreeUseCase.cs 749 B

123456789101112131415161718
  1. using RackPeek.Domain.Helpers;
  2. using RackPeek.Domain.Persistence;
  3. using RackPeek.Domain.Resources.Hardware;
  4. namespace RackPeek.Domain.Resources.SystemResources.UseCases;
  5. public class GetSystemServiceTreeUseCase(
  6. IResourceCollection repo) : IUseCase {
  7. public async Task<SystemDependencyTree> ExecuteAsync(string name) {
  8. name = Normalize.SystemName(name);
  9. ThrowIfInvalid.ResourceName(name);
  10. var system = await repo.GetByNameAsync(name) as SystemResource;
  11. if (system is null) throw new NotFoundException($"System '{name}' not found.");
  12. IReadOnlyList<Resource> services = await repo.GetDependantsAsync(system.Name);
  13. return new SystemDependencyTree(system, services.OfType<Resource>());
  14. }
  15. }