Skip to main content

Store

Trait Store 

Source
pub trait Store: Send + Sync {
    // Required methods
    fn latest_read_time(&self, database: &str) -> ReadTime;
    fn earliest_read_time(&self, database: &str) -> ReadTime;
    fn get(
        &self,
        database: &str,
        path: &ResourcePath,
        at: ReadTime,
    ) -> Option<Arc<StoredDocument>>;
    fn list_collection(
        &self,
        database: &str,
        collection: &ResourcePath,
        at: ReadTime,
        options: ListOptions<'_>,
        visit: &mut dyn FnMut(ListItem<'_>) -> ControlFlow<()>,
    );
    fn scan_collection_group(
        &self,
        database: &str,
        parent: &ResourcePath,
        collection_id: &str,
        at: ReadTime,
        visit: &mut Visit<'_>,
    );
    fn scan_descendants(
        &self,
        database: &str,
        parent: &ResourcePath,
        at: ReadTime,
        visit: &mut Visit<'_>,
    );
    fn list_collection_ids(
        &self,
        database: &str,
        parent: &ResourcePath,
        at: ReadTime,
    ) -> Vec<String>;
    fn commit(
        &self,
        database: &str,
        write: &mut dyn FnMut(&mut dyn WriteBatch) -> Result<(), StoreError>,
    ) -> Result<Commit, StoreError>;
    fn clear_database(&self, database: &str) -> ReadTime;
    fn database_names(&self) -> Vec<String>;
    fn clear(&self);

    // Provided method
    fn scan_collection(
        &self,
        database: &str,
        collection: &ResourcePath,
        at: ReadTime,
        visit: &mut Visit<'_>,
    ) { ... }
}
Expand description

The storage engine. database is the full database name, projects/{project}/databases/{database}; databases are created on first write.

Required Methods§

Source

fn latest_read_time(&self, database: &str) -> ReadTime

A read time that sees every commit made so far.

Source

fn earliest_read_time(&self, database: &str) -> ReadTime

The oldest read time still served; older versions may have been dropped.

Source

fn get( &self, database: &str, path: &ResourcePath, at: ReadTime, ) -> Option<Arc<StoredDocument>>

Source

fn list_collection( &self, database: &str, collection: &ResourcePath, at: ReadTime, options: ListOptions<'_>, visit: &mut dyn FnMut(ListItem<'_>) -> ControlFlow<()>, )

Like Store::scan_collection, with paging and missing documents.

Source

fn scan_collection_group( &self, database: &str, parent: &ResourcePath, collection_id: &str, at: ReadTime, visit: &mut Visit<'_>, )

Every document under parent (a document path, or the root) whose collection ID is collection_id, at any depth, ordered by full path.

Source

fn scan_descendants( &self, database: &str, parent: &ResourcePath, at: ReadTime, visit: &mut Visit<'_>, )

Every document below parent (a document path, or the root), at any depth, ordered by path. parent itself is not included.

Source

fn list_collection_ids( &self, database: &str, parent: &ResourcePath, at: ReadTime, ) -> Vec<String>

IDs of the collections directly under parent that contain at least one document at any depth, in UTF-8 order.

Source

fn commit( &self, database: &str, write: &mut dyn FnMut(&mut dyn WriteBatch) -> Result<(), StoreError>, ) -> Result<Commit, StoreError>

Runs write as one atomic commit.

Source

fn clear_database(&self, database: &str) -> ReadTime

Drops every document of database and every older version, at a time after its last commit, which it returns: later commits are later still, so listeners can order the clear among them.

Source

fn database_names(&self) -> Vec<String>

The databases that hold or held documents.

Source

fn clear(&self)

Drops every database.

Provided Methods§

Source

fn scan_collection( &self, database: &str, collection: &ResourcePath, at: ReadTime, visit: &mut Visit<'_>, )

The documents directly in collection (not in its subcollections).

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§