Skip to main content

KuzuGraphStore

Struct KuzuGraphStore 

Source
pub struct KuzuGraphStore { /* private fields */ }
Expand description

Local KuzuDB-backed implementation of GraphStore.

One database file per repo (graph.kuzu), with per-branch node/edge tables inside it. A fresh Connection is created for each operation so we avoid the self-referential lifetime that Mutex<Connection<'db>> would require.

Implementations§

Source§

impl KuzuGraphStore

Source

pub fn open(repo_root: &Path) -> Result<Self>

Open (or create) the graph database for the repo at repo_root.

If the persisted schema version doesn’t match SCHEMA_VERSION, the entire repo data directory is wiped so a fresh full index runs on next hook invocation.

Trait Implementations§

Source§

impl GraphStore for KuzuGraphStore

Source§

fn apply_diff(&mut self, branch: &str, diff: &GraphDiff) -> Result<()>

Apply an incremental diff to the named branch’s graph.
Source§

fn lookup_symbol( &self, branch: &str, name: &str, fuzzy: bool, ) -> Result<Vec<Node>>

Find all nodes matching name on branch. When fuzzy is true, matches any node whose name contains name (case-sensitive substring). When false, exact match only.
Source§

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 (single hop).
Source§

fn find_callers_deep( &self, branch: &str, function_name: &str, depth: u8, ) -> Result<CallersDeep>

Multi-hop BFS: find callers up to depth hops away. Returns callers grouped by hop distance (1..=depth). depth is capped at 5 to prevent runaway queries.
Source§

fn symbol_context(&self, branch: &str, name: &str) -> Result<SymbolContext>

Return a 360° view of a symbol: its definition, direct callers, direct callees, and nodes that reference it via Uses edges.
Source§

fn list_definitions(&self, branch: &str, file: &Path) -> Result<Vec<Node>>

List all top-level definitions in file on branch.
Source§

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_*.
Source§

fn list_all_nodes(&self, branch: &str) -> Result<Vec<Node>>

Return all nodes in branch’s graph.
Source§

fn search_nodes( &self, branch: &str, query: &str, limit: usize, ) -> Result<Vec<Node>>

Return nodes whose name or qualified_name contains query (case- sensitive substring), up to limit results. Implementations should push the filter to the store rather than scanning all nodes in memory. Read more
Source§

fn get_nodes_by_ids(&self, branch: &str, ids: &[String]) -> Result<Vec<Node>>

Resolve a set of node IDs to full nodes. Order is not guaranteed; IDs that don’t exist on branch are silently skipped. Read more
Source§

fn list_all_edges(&self, branch: &str) -> Result<Vec<Edge>>

Return all edges in branch’s graph.
Source§

fn search_by_attributes( &self, branch: &str, filter: &AttributeFilter, limit: usize, ) -> Result<Vec<Node>>

Find nodes matching a structural filter (kind, async, visibility, complexity range, name substring), up to limit results. Read more
Source§

fn graph_stats(&self, branch: &str) -> Result<GraphStats>

Aggregate node/edge counts (total + per-kind) for branch. Read more
Source§

fn find_callees( &self, branch: &str, function_name: &str, depth: u8, ) -> Result<CallersDeep>

Find all functions/methods called by function_name up to depth hops. Returns callees grouped by hop distance (1..=depth). Capped at 5.
Source§

fn find_implementors( &self, branch: &str, trait_or_interface_name: &str, ) -> Result<Vec<Node>>

Find all structs/classes that implement/inherit trait_or_interface_name.
Source§

fn find_type_usages(&self, branch: &str, type_name: &str) -> Result<Vec<Node>>

Find functions/methods that reference a type named type_name as a parameter or return type (following Uses edges). Answers “where is type T used in a signature” — the type-level analogue of find_callers. Read more
Source§

fn find_call_sites( &self, branch: &str, function_name: &str, ) -> Result<Vec<CallSite>>

Find every call site of the function named function_name: the calling symbol plus the source line of each call expression (following Calls edges). Where find_callers returns only the calling symbols, this also pinpoints the line each call happens on. Read more
Source§

fn find_importers(&self, branch: &str, symbol_name: &str) -> Result<Vec<Node>>

Find the module/file nodes that import a symbol named symbol_name (following Imports edges). Answers “who imports X”. Read more
Source§

fn type_hierarchy(&self, branch: &str, name: &str) -> Result<TypeHierarchy>

Return both directions of the type relation for name: the types it implements/extends (supertypes) and the types that implement/extend it (subtypes), following Implements and Inherits edges. Read more
Source§

fn trace_path(&self, branch: &str, from: &str, to: &str) -> Result<Vec<Node>>

Find all call paths between from and to using BFS. Returns at most one path (the shortest), as a sequence of nodes.
Source§

fn list_symbols_in_range( &self, branch: &str, file: &Path, start_line: u32, end_line: u32, ) -> Result<Vec<Node>>

Find all nodes in file whose span overlaps [start_line, end_line].
Source§

fn find_unused_symbols( &self, branch: &str, kind: Option<NodeKind>, ) -> Result<Vec<Node>>

Find symbols with no incoming Calls or Uses edges (potential dead code). If kind is provided, filters to only that NodeKind.
Source§

fn get_subgraph( &self, branch: &str, seed_name: &str, depth: u8, direction: &str, ) -> Result<SubGraph>

Return a subgraph centred on seed_name up to depth hops. direction: “in” (callers), “out” (callees), or “both”.
Source§

fn last_indexed_sha(&self, branch_name: &str) -> Result<Option<String>>

Last commit SHA successfully indexed for branch. None if the branch has never been indexed.
Source§

fn set_last_indexed_sha(&mut self, branch_name: &str, sha: &str) -> Result<()>

Persist the commit SHA after a successful index run.
Source§

fn module_dependencies( &self, branch: &str, module_name: &str, ) -> Result<Vec<Node>, GitCortexError>

Return the in-repo modules that a module named module_name depends on, resolved by following its Imports edges to the defining module of each imported symbol. Answers “what does this module depend on”. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more