pub trait GraphStore: Send + Sync {
// Required methods
fn apply_diff(&mut self, branch: &str, diff: &GraphDiff) -> Result<()>;
fn lookup_symbol(&self, branch: &str, name: &str) -> Result<Vec<Node>>;
fn find_callers(
&self,
branch: &str,
function_name: &str,
) -> Result<Vec<Node>>;
fn list_definitions(&self, branch: &str, file: &Path) -> Result<Vec<Node>>;
fn list_all_nodes(&self, branch: &str) -> Result<Vec<Node>>;
fn list_all_edges(&self, branch: &str) -> Result<Vec<Edge>>;
fn branch_diff(&self, from: &str, to: &str) -> Result<GraphDiff>;
fn last_indexed_sha(&self, branch: &str) -> Result<Option<String>>;
fn set_last_indexed_sha(&mut self, branch: &str, sha: &str) -> Result<()>;
}Expand description
Backend-agnostic interface for the knowledge graph store.
The v0.1 implementation is KuzuGraphStore (local embedded DB).
A remote backend can be plugged in by implementing this trait without
touching the indexer or MCP layers.
Required Methods§
Sourcefn apply_diff(&mut self, branch: &str, diff: &GraphDiff) -> Result<()>
fn apply_diff(&mut self, branch: &str, diff: &GraphDiff) -> Result<()>
Apply an incremental diff to the named branch’s graph.
Sourcefn lookup_symbol(&self, branch: &str, name: &str) -> Result<Vec<Node>>
fn lookup_symbol(&self, branch: &str, name: &str) -> Result<Vec<Node>>
Find all nodes matching name (exact, case-sensitive) on branch.
Sourcefn find_callers(&self, branch: &str, function_name: &str) -> Result<Vec<Node>>
fn find_callers(&self, branch: &str, function_name: &str) -> Result<Vec<Node>>
Find all call-site nodes whose outgoing Calls edge points to a node
named function_name on branch.
Sourcefn list_definitions(&self, branch: &str, file: &Path) -> Result<Vec<Node>>
fn list_definitions(&self, branch: &str, file: &Path) -> Result<Vec<Node>>
List all top-level definitions in file on branch.
Sourcefn list_all_nodes(&self, branch: &str) -> Result<Vec<Node>>
fn list_all_nodes(&self, branch: &str) -> Result<Vec<Node>>
Return all nodes in branch’s graph.
Sourcefn list_all_edges(&self, branch: &str) -> Result<Vec<Edge>>
fn list_all_edges(&self, branch: &str) -> Result<Vec<Edge>>
Return all edges in branch’s graph.
Sourcefn branch_diff(&self, from: &str, to: &str) -> Result<GraphDiff>
fn branch_diff(&self, from: &str, to: &str) -> Result<GraphDiff>
Return the graph delta between two branches as a GraphDiff.
Nodes/edges present in to but not from are in added_*.
Nodes/edges present in from but not to are in removed_*.