cmd_graph, cmd_list_keys: use query language internally

Dog-food the query engine for node-property filtering.
cmd_link left unconverted — needs edge data in query results.
This commit is contained in:
ProofOfConcept 2026-03-03 11:38:11 -05:00
parent 18face7063
commit 64d2b441f0

View file

@ -319,16 +319,13 @@ fn cmd_graph() -> Result<(), String> {
let store = capnp_store::Store::load()?; let store = capnp_store::Store::load()?;
let g = store.build_graph(); let g = store.build_graph();
// Show top-10 highest degree nodes
let mut degrees: Vec<_> = g.nodes().iter()
.map(|k| (k.clone(), g.degree(k)))
.collect();
degrees.sort_by(|a, b| b.1.cmp(&a.1));
println!("Top nodes by degree:"); println!("Top nodes by degree:");
for (key, deg) in degrees.iter().take(10) { let results = query::execute_query(
let cc = g.clustering_coefficient(key); &store, &g, "* | sort degree | limit 10")?;
println!(" {:40} deg={:3} cc={:.3}", key, deg, cc); for r in &results {
let deg = g.degree(&r.key);
let cc = g.clustering_coefficient(&r.key);
println!(" {:40} deg={:3} cc={:.3}", r.key, deg, cc);
} }
Ok(()) Ok(())
} }
@ -1224,10 +1221,10 @@ fn cmd_spectral_suggest(args: &[String]) -> Result<(), String> {
fn cmd_list_keys() -> Result<(), String> { fn cmd_list_keys() -> Result<(), String> {
let store = capnp_store::Store::load()?; let store = capnp_store::Store::load()?;
let mut keys: Vec<_> = store.nodes.keys().collect(); let g = store.build_graph();
keys.sort(); let results = query::execute_query(&store, &g, "* | sort key asc")?;
for key in keys { for r in &results {
println!("{}", key); println!("{}", r.key);
} }
Ok(()) Ok(())
} }