pub trait Store {
// Required methods
fn scan(
&self,
relation: &str,
) -> Result<Box<dyn Iterator<Item = Vec<Value>> + '_>, Error>;
fn scan_delta(
&self,
relation: &str,
) -> Result<Box<dyn Iterator<Item = Vec<Value>> + '_>, Error>;
fn scan_next_delta(
&self,
relation: &str,
) -> Result<Box<dyn Iterator<Item = Vec<Value>> + '_>, Error>;
fn scan_index(
&self,
relation: &str,
col_idx: usize,
key: &Value,
) -> Result<Box<dyn Iterator<Item = Vec<Value>> + '_>, Error>;
fn scan_delta_index(
&self,
relation: &str,
col_idx: usize,
key: &Value,
) -> Result<Box<dyn Iterator<Item = Vec<Value>> + '_>, Error>;
fn insert(
&mut self,
relation: &str,
tuple: Vec<Value>,
) -> Result<bool, Error>;
fn merge_deltas(&mut self);
fn create_relation(&mut self, relation: &str);
fn retract(
&mut self,
relation: &str,
tuple: &[Value],
) -> Result<bool, Error>;
fn clear(&mut self, relation: &str);
fn relation_names(&self) -> Vec<String>;
}Expand description
Abstract interface for relation storage (Edge Mode).
Required Methods§
Sourcefn scan(
&self,
relation: &str,
) -> Result<Box<dyn Iterator<Item = Vec<Value>> + '_>, Error>
fn scan( &self, relation: &str, ) -> Result<Box<dyn Iterator<Item = Vec<Value>> + '_>, Error>
Returns an iterator over all tuples in the relation. Returns an error if the relation does not exist.
Sourcefn scan_delta(
&self,
relation: &str,
) -> Result<Box<dyn Iterator<Item = Vec<Value>> + '_>, Error>
fn scan_delta( &self, relation: &str, ) -> Result<Box<dyn Iterator<Item = Vec<Value>> + '_>, Error>
Returns an iterator over only the new tuples added in the last iteration.
Sourcefn scan_next_delta(
&self,
relation: &str,
) -> Result<Box<dyn Iterator<Item = Vec<Value>> + '_>, Error>
fn scan_next_delta( &self, relation: &str, ) -> Result<Box<dyn Iterator<Item = Vec<Value>> + '_>, Error>
Returns an iterator over tuples being collected for the next iteration.
Sourcefn scan_index(
&self,
relation: &str,
col_idx: usize,
key: &Value,
) -> Result<Box<dyn Iterator<Item = Vec<Value>> + '_>, Error>
fn scan_index( &self, relation: &str, col_idx: usize, key: &Value, ) -> Result<Box<dyn Iterator<Item = Vec<Value>> + '_>, Error>
Returns an iterator over tuples in the relation matching a key in a column.
Sourcefn scan_delta_index(
&self,
relation: &str,
col_idx: usize,
key: &Value,
) -> Result<Box<dyn Iterator<Item = Vec<Value>> + '_>, Error>
fn scan_delta_index( &self, relation: &str, col_idx: usize, key: &Value, ) -> Result<Box<dyn Iterator<Item = Vec<Value>> + '_>, Error>
Returns an iterator over delta tuples matching a key in a column.
Sourcefn insert(&mut self, relation: &str, tuple: Vec<Value>) -> Result<bool, Error>
fn insert(&mut self, relation: &str, tuple: Vec<Value>) -> Result<bool, Error>
Inserts a tuple into the relation (specifically into the delta/new set). Returns true if it was new.
Sourcefn merge_deltas(&mut self)
fn merge_deltas(&mut self)
Merges current deltas into the stable set of facts.
Sourcefn create_relation(&mut self, relation: &str)
fn create_relation(&mut self, relation: &str)
Ensures a relation exists in the store.
Sourcefn retract(&mut self, relation: &str, tuple: &[Value]) -> Result<bool, Error>
fn retract(&mut self, relation: &str, tuple: &[Value]) -> Result<bool, Error>
Removes a specific tuple from the relation’s stable set. Returns true if the tuple was found and removed.
Sourcefn clear(&mut self, relation: &str)
fn clear(&mut self, relation: &str)
Removes all tuples from a relation (stable, delta, and next_delta).
Sourcefn relation_names(&self) -> Vec<String>
fn relation_names(&self) -> Vec<String>
Returns the names of all relations in the store.