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 OpLog (in-memory) immediately. Persistence depends on flush_mode:

  • Immediate: each write persists to redb (safe, slow).
  • Deferred: writes buffer until flush() is called (fast, one fsync for N writes).

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 OpLog immediately, persists based on flush_mode.

Source

pub fn set_flush_mode(&mut self, mode: FlushMode)

Set the flush mode.

Source

pub fn flush(&mut self) -> Result<usize, StoreError>

Flush all pending entries to redb in a single transaction. No-op if no pending entries or if flush_mode is Immediate.

Source

pub fn pending_count(&self) -> usize

Number of entries pending flush (0 in Immediate mode).

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.