agentic_reality/engine/query/
topology.rs1use crate::engine::query::QueryEngine;
4use crate::types::error::{RealityError, RealityResult};
5use crate::types::ids::DependencyId;
6use crate::types::topology::*;
7
8impl<'a> QueryEngine<'a> {
9 pub fn get_topology_map(&self) -> RealityResult<&DeploymentTopologyMap> {
10 self.engine
11 .topology_store
12 .topology
13 .as_ref()
14 .ok_or_else(|| RealityError::NotInitialized("topology".into()))
15 }
16
17 pub fn get_position(&self) -> RealityResult<&TopologyPosition> {
18 Ok(&self.get_topology_map()?.self_position)
19 }
20
21 pub fn get_upstream(&self) -> RealityResult<&[UpstreamEntity]> {
22 Ok(&self.get_topology_map()?.upstream)
23 }
24
25 pub fn get_downstream(&self) -> RealityResult<&[DownstreamEntity]> {
26 Ok(&self.get_topology_map()?.downstream)
27 }
28
29 pub fn get_dependency(&self, id: &DependencyId) -> RealityResult<&DownstreamEntity> {
30 let topo = self.get_topology_map()?;
31 topo.downstream
32 .iter()
33 .find(|d| d.id == *id)
34 .ok_or_else(|| RealityError::NotFound(format!("dependency {}", id)))
35 }
36
37 pub fn get_siblings(&self) -> RealityResult<&[SiblingEntity]> {
38 Ok(&self.get_topology_map()?.siblings)
39 }
40
41 pub fn get_observers(&self) -> RealityResult<&[ObserverEntity]> {
42 Ok(&self.get_topology_map()?.observers)
43 }
44
45 pub fn get_topology_health(&self) -> RealityResult<&TopologyHealth> {
46 Ok(&self.get_topology_map()?.topology_health)
47 }
48
49 pub fn get_weak_links(&self) -> RealityResult<&[String]> {
50 Ok(&self.get_topology_map()?.topology_health.weak_links)
51 }
52
53 pub fn get_single_points(&self) -> RealityResult<&[String]> {
54 Ok(&self
55 .get_topology_map()?
56 .topology_health
57 .single_points_of_failure)
58 }
59
60 pub fn find_path(&self, _from: &str, _to: &str) -> RealityResult<Vec<String>> {
61 Ok(vec![])
62 }
63
64 pub fn get_neighbor_awareness(&self) -> RealityResult<&NeighborAwareness> {
65 self.engine
66 .topology_store
67 .neighbors
68 .as_ref()
69 .ok_or_else(|| RealityError::NotInitialized("neighbor awareness".into()))
70 }
71}