From 64d2b441f0a98e24de0977f36a7e39a2e8bd9c12 Mon Sep 17 00:00:00 2001 From: ProofOfConcept Date: Tue, 3 Mar 2026 11:38:11 -0500 Subject: [PATCH] cmd_graph, cmd_list_keys: use query language internally MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dog-food the query engine for node-property filtering. cmd_link left unconverted — needs edge data in query results. --- src/main.rs | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/main.rs b/src/main.rs index bcbbef0..96f5de0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -319,16 +319,13 @@ fn cmd_graph() -> Result<(), String> { let store = capnp_store::Store::load()?; 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:"); - for (key, deg) in degrees.iter().take(10) { - let cc = g.clustering_coefficient(key); - println!(" {:40} deg={:3} cc={:.3}", key, deg, cc); + let results = query::execute_query( + &store, &g, "* | sort degree | limit 10")?; + 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(()) } @@ -1224,10 +1221,10 @@ fn cmd_spectral_suggest(args: &[String]) -> Result<(), String> { fn cmd_list_keys() -> Result<(), String> { let store = capnp_store::Store::load()?; - let mut keys: Vec<_> = store.nodes.keys().collect(); - keys.sort(); - for key in keys { - println!("{}", key); + let g = store.build_graph(); + let results = query::execute_query(&store, &g, "* | sort key asc")?; + for r in &results { + println!("{}", r.key); } Ok(()) }