YamlResourceRepository.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using RackPeek.Domain.Resources;
  2. using RackPeek.Domain.Resources.Models;
  3. using RackPeek.Domain.Resources.Services;
  4. using RackPeek.Domain.Resources.SystemResources;
  5. namespace RackPeek.Domain.Persistence;
  6. public class YamlResourceRepository(IResourceCollection resources) : IResourceRepository
  7. {
  8. public Task<string?> GetResourceKindAsync(string name)
  9. {
  10. // Use the centralized GetByName which handles casing correctly
  11. var resource = resources.GetByName(name);
  12. // Return the Kind label if it exists
  13. return Task.FromResult(resource switch
  14. {
  15. Hardware h => h.Kind,
  16. SystemResource s => SystemResource.KindLabel,
  17. Service svc => Service.KindLabel,
  18. _ => null
  19. });
  20. }
  21. public Task<bool> ResourceExistsAsync(string name)
  22. {
  23. return Task.FromResult(resources.GetByName(name) != null);
  24. }
  25. public Task<IReadOnlyList<Resource>> GetByTagAsync(string name)
  26. {
  27. return resources.GetByTagAsync(name);
  28. }
  29. public Task<Dictionary<string, int>> GetTagsAsync()
  30. {
  31. return resources.GetTagsAsync();
  32. }
  33. }