IResourceCollection.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using RackPeek.Domain.Resources;
  2. using RackPeek.Domain.Resources.Connections;
  3. using RackPeek.Domain.Resources.Hardware;
  4. using RackPeek.Domain.Resources.Services;
  5. using RackPeek.Domain.Resources.SystemResources;
  6. namespace RackPeek.Domain.Persistence;
  7. public interface IResourceCollection
  8. {
  9. IReadOnlyList<Hardware> HardwareResources { get; }
  10. IReadOnlyList<SystemResource> SystemResources { get; }
  11. IReadOnlyList<Service> ServiceResources { get; }
  12. Task AddAsync(Resource resource);
  13. Task UpdateAsync(Resource resource);
  14. Task DeleteAsync(string name);
  15. Task<Resource?> GetByNameAsync(string name);
  16. Task<T?> GetByNameAsync<T>(string name) where T : Resource;
  17. Resource? GetByName(string name);
  18. Task<bool> Exists(string name);
  19. Task<string?> GetKind(string? name);
  20. Task LoadAsync(); // required for WASM startup
  21. Task<IReadOnlyList<Resource>> GetByTagAsync(string name);
  22. public Task<Dictionary<string, int>> GetTagsAsync();
  23. Task<IReadOnlyList<(Resource, string)>> GetByLabelAsync(string name);
  24. public Task<Dictionary<string, int>> GetLabelsAsync();
  25. Task<IReadOnlyList<(Resource, string)>> GetResourceIpsAsync();
  26. Task<IReadOnlyList<T>> GetAllOfTypeAsync<T>();
  27. Task<IReadOnlyList<Resource>> GetDependantsAsync(string name);
  28. Task Merge(string incomingYaml, MergeMode mode);
  29. Task AddConnectionAsync(Connection connection);
  30. Task RemoveConnectionAsync(Connection connection);
  31. Task RemoveConnectionsForPortAsync(PortReference port);
  32. Task<IReadOnlyList<Connection>> GetConnectionsAsync();
  33. Task<IReadOnlyList<Connection>> GetConnectionsForResourceAsync(string resource);
  34. Task<Connection?> GetConnectionForPortAsync(PortReference port);
  35. }