bijux_cli/features/diagnostics/
routing_inventory.rs1use serde::Serialize;
4
5use crate::contracts::NamespaceMetadata;
6use crate::routing::registry::RouteRegistry;
7
8#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
10pub struct RouteInventory {
11 pub routes: Vec<Vec<String>>,
13 pub aliases: Vec<(Vec<String>, Vec<String>)>,
15}
16
17#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
19pub struct RegistryInventory {
20 pub namespaces: Vec<NamespaceMetadata>,
22}
23
24#[must_use]
26pub fn route_inventory(registry: &RouteRegistry) -> RouteInventory {
27 let routes = registry
28 .built_in_paths()
29 .into_iter()
30 .map(|path| path.segments.into_iter().map(|segment| segment.0).collect())
31 .collect();
32 let aliases = registry
33 .alias_rewrites()
34 .into_iter()
35 .map(|(alias, canonical)| {
36 (
37 alias.segments.into_iter().map(|segment| segment.0).collect(),
38 canonical.segments.into_iter().map(|segment| segment.0).collect(),
39 )
40 })
41 .collect();
42 RouteInventory { routes, aliases }
43}
44
45#[must_use]
47pub fn registry_inventory(registry: &RouteRegistry) -> RegistryInventory {
48 RegistryInventory { namespaces: registry.route_tree() }
49}