Skip to main content

Store

Struct Store 

Source
pub struct Store {
    pub oplog: OpLog,
    /* private fields */
}
Expand description

Persistent graph store backed by redb + in-memory OpLog.

On open: loads all entries from redb into the OpLog. On append: writes to both OpLog (in-memory) and redb (on-disk) atomically.

Fields§

§oplog: OpLog

Implementations§

Source§

impl Store

Source

pub fn open(path: &Path, genesis: Option<Entry>) -> Result<Self, StoreError>

Open or create a store at the given path.

If the database already exists, all entries are loaded into the OpLog. If the database is new, a genesis entry must be provided.

Source

pub fn append(&mut self, entry: Entry) -> Result<bool, StoreError>

Append an entry — writes to both OpLog and redb. Review 4 fix: single redb transaction for entry + heads (was 2 transactions).

Source

pub fn merge(&mut self, entries: &[Entry]) -> Result<usize, StoreError>

Merge a batch of remote entries — writes each to OpLog and redb.

Handles out-of-order entries by retrying those with missing parents. Returns the number of new entries merged. Review 4 fix: batches all entry writes + heads into fewer transactions.

Source

pub fn replace_with_checkpoint( &mut self, checkpoint: Entry, ) -> Result<(), StoreError>

R-08: Replace entire store with a single checkpoint entry.

Auto Trait Implementations§

§

impl Freeze for Store

§

impl !RefUnwindSafe for Store

§

impl Send for Store

§

impl Sync for Store

§

impl Unpin for Store

§

impl UnsafeUnpin for Store

§

impl !UnwindSafe for Store

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, 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.