pub struct GraphDB { /* private fields */ }Expand description
High-performance graph database with concurrent access
Implementations§
Source§impl GraphDB
impl GraphDB
Sourcepub fn with_storage<P: AsRef<Path>>(path: P) -> Result<Self>
pub fn with_storage<P: AsRef<Path>>(path: P) -> Result<Self>
Create a new graph database with persistent storage
Sourcepub fn create_node(&self, node: Node) -> Result<NodeId>
pub fn create_node(&self, node: Node) -> Result<NodeId>
Create a node
Sourcepub fn with_node<R>(&self, id: &str, f: impl FnOnce(&Node) -> R) -> Option<R>
pub fn with_node<R>(&self, id: &str, f: impl FnOnce(&Node) -> R) -> Option<R>
Borrow a node and apply f without cloning it.
Hot-path accessor for scans that only need to read a node (e.g. vector
scoring). Avoids the full Node + embedding clone that get_node
incurs. Returns None if the node is absent.
Sourcepub fn node_ids_by_label(&self, label: &str) -> Vec<NodeId> ⓘ
pub fn node_ids_by_label(&self, label: &str) -> Vec<NodeId> ⓘ
Node ids carrying label, straight from the label index (no node clones).
Sourcepub fn get_nodes_by_label(&self, label: &str) -> Vec<Node>
pub fn get_nodes_by_label(&self, label: &str) -> Vec<Node>
Get nodes by label
Sourcepub fn get_nodes_by_property(
&self,
key: &str,
value: &PropertyValue,
) -> Vec<Node>
pub fn get_nodes_by_property( &self, key: &str, value: &PropertyValue, ) -> Vec<Node>
Get nodes by property
Sourcepub fn create_edge(&self, edge: Edge) -> Result<EdgeId>
pub fn create_edge(&self, edge: Edge) -> Result<EdgeId>
Create an edge
Sourcepub fn delete_edges_batch(&self, ids: &[impl AsRef<str>]) -> Result<usize>
pub fn delete_edges_batch(&self, ids: &[impl AsRef<str>]) -> Result<usize>
Delete multiple edges (batch)
Sourcepub fn get_edges_by_type(&self, edge_type: &str) -> Vec<Edge>
pub fn get_edges_by_type(&self, edge_type: &str) -> Vec<Edge>
Get edges by type
Sourcepub fn get_outgoing_edges(&self, node_id: &NodeId) -> Vec<Edge>
pub fn get_outgoing_edges(&self, node_id: &NodeId) -> Vec<Edge>
Get outgoing edges from a node
Sourcepub fn get_incoming_edges(&self, node_id: &NodeId) -> Vec<Edge>
pub fn get_incoming_edges(&self, node_id: &NodeId) -> Vec<Edge>
Get incoming edges to a node
Sourcepub fn has_edge(&self, from: &NodeId, to: &NodeId, edge_type: &str) -> bool
pub fn has_edge(&self, from: &NodeId, to: &NodeId, edge_type: &str) -> bool
Checks whether an edge exists from from → to with type edge_type.
Returns true if found, false otherwise.
Fast path: avoids cloning Edge by reading fields through the DashMap
reference guard and short-circuits on first match.
Sourcepub fn get_edges_for_nodes(&self, node_ids: &[NodeId]) -> Vec<Edge>
pub fn get_edges_for_nodes(&self, node_ids: &[NodeId]) -> Vec<Edge>
Get outgoing edges for multiple nodes in one call (O(k×avg_degree) vs O(E) for full scan).
Sourcepub fn create_hyperedge(&self, hyperedge: Hyperedge) -> Result<HyperedgeId>
pub fn create_hyperedge(&self, hyperedge: Hyperedge) -> Result<HyperedgeId>
Create a hyperedge
Sourcepub fn get_hyperedge(&self, id: &HyperedgeId) -> Option<Hyperedge>
pub fn get_hyperedge(&self, id: &HyperedgeId) -> Option<Hyperedge>
Get a hyperedge by ID
Sourcepub fn get_hyperedges_by_node(&self, node_id: &NodeId) -> Vec<Hyperedge>
pub fn get_hyperedges_by_node(&self, node_id: &NodeId) -> Vec<Hyperedge>
Get hyperedges containing a node
Sourcepub fn delete_hyperedge(&self, id: &HyperedgeId) -> Result<bool>
pub fn delete_hyperedge(&self, id: &HyperedgeId) -> Result<bool>
Delete a hyperedge by ID
Sourcepub fn delete_hyperedges_by_node(&self, node_id: &NodeId) -> Result<usize>
pub fn delete_hyperedges_by_node(&self, node_id: &NodeId) -> Result<usize>
Delete all hyperedges that contain a given node
Sourcepub fn node_count(&self) -> usize
pub fn node_count(&self) -> usize
Get the number of nodes
Sourcepub fn edge_count(&self) -> usize
pub fn edge_count(&self) -> usize
Get the number of edges
Sourcepub fn hyperedge_count(&self) -> usize
pub fn hyperedge_count(&self) -> usize
Get the number of hyperedges
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for GraphDB
impl !UnwindSafe for GraphDB
impl Freeze for GraphDB
impl Send for GraphDB
impl Sync for GraphDB
impl Unpin for GraphDB
impl UnsafeUnpin for GraphDB
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request