Skip to main content

GraphStore

Struct GraphStore 

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

The main storage engine for the graph database.

GraphStore provides a transactional interface for inserting, deleting, and querying triples, while managing the underlying storage backend and in-memory indexes for efficient lookups.

Implementations§

Source§

impl GraphStore

Source

pub fn new(backend: Box<dyn StorageBackend>) -> Result<Self>

Creates a new GraphStore with the given storage backend.

This will also build the initial in-memory indexes from the data already present in the backend.

Source

pub fn insert(&self, triple: Triple) -> Result<TripleId>

Inserts a single Triple into the store.

§Errors

Returns an Error::Duplicate if a triple with the same content already exists.

Source

pub fn insert_batch(&self, triples: Vec<Triple>) -> Result<Vec<TripleId>>

Inserts a batch of Triples into the store.

In batch mode, duplicates are silently skipped instead of returning an error. Uses an atomic batch write when supported by the backend (e.g., Sled).

Source

pub fn get(&self, id: &TripleId) -> Result<Option<Triple>>

Retrieves a Triple by its TripleId.

Source

pub fn delete(&self, id: &TripleId) -> Result<bool>

Deletes a Triple by its TripleId.

§Returns

Ok(true) if the triple was found and deleted, Ok(false) otherwise.

Source

pub fn find(&self, pattern: TriplePattern) -> Result<Vec<Triple>>

Finds all triples that match a given TriplePattern.

The store will attempt to use the most efficient index based on the components specified in the pattern.

Source

pub fn contains(&self, triple: &Triple) -> Result<bool>

Returns true if a triple with the same content already exists in the store.

Source

pub fn traverse( &self, start: &NodeId, predicates: &[Predicate], ) -> Result<Vec<NodeId>>

Traverses the graph starting from a node and following a set of predicates.

Source

pub fn count(&self) -> usize

Returns the total number of triples in the store.

Source

pub fn backend_as_any(&self) -> &dyn Any

Access the underlying storage backend as Any for downcasting (e.g. to reach the Sled Db for the shared persistent DAG).

Source

pub fn flush(&self) -> Result<()>

Flushes any buffered writes to the underlying storage backend.

For persistent backends (e.g., Sled), this ensures all data is written to disk. For in-memory backends, this is a no-op.

Source

pub fn stats(&self) -> GraphStats

Returns statistics about the graph, such as triple and node counts.

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, 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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.