Skip to main content

EntityStore

Trait EntityStore 

Source
pub trait EntityStore: Send + Sync {
    // Required methods
    fn register_schema<'life0, 'life1, 'async_trait>(
        &'life0 self,
        schema: &'life1 EntitySchema,
    ) -> Pin<Box<dyn Future<Output = Result<(), IndexerError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn insert<'life0, 'async_trait>(
        &'life0 self,
        row: EntityRow,
    ) -> Pin<Box<dyn Future<Output = Result<(), IndexerError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn upsert<'life0, 'async_trait>(
        &'life0 self,
        row: EntityRow,
    ) -> Pin<Box<dyn Future<Output = Result<(), IndexerError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn delete<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        entity_type: &'life1 str,
        id: &'life2 str,
    ) -> Pin<Box<dyn Future<Output = Result<(), IndexerError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait;
    fn delete_after_block<'life0, 'life1, 'async_trait>(
        &'life0 self,
        entity_type: &'life1 str,
        block_number: u64,
    ) -> Pin<Box<dyn Future<Output = Result<u64, IndexerError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn query<'life0, 'async_trait>(
        &'life0 self,
        query: EntityQuery,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<EntityRow>, IndexerError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn count<'life0, 'life1, 'async_trait>(
        &'life0 self,
        entity_type: &'life1 str,
    ) -> Pin<Box<dyn Future<Output = Result<u64, IndexerError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
}
Expand description

Trait for entity storage backends.

Backends (memory, SQLite, Postgres) implement this trait to provide structured entity storage.

Required Methods§

Source

fn register_schema<'life0, 'life1, 'async_trait>( &'life0 self, schema: &'life1 EntitySchema, ) -> Pin<Box<dyn Future<Output = Result<(), IndexerError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Register (create) a schema. Backends may create tables/collections.

Source

fn insert<'life0, 'async_trait>( &'life0 self, row: EntityRow, ) -> Pin<Box<dyn Future<Output = Result<(), IndexerError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Insert a new entity row. Errors if a row with the same primary key exists.

Source

fn upsert<'life0, 'async_trait>( &'life0 self, row: EntityRow, ) -> Pin<Box<dyn Future<Output = Result<(), IndexerError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Insert or update an entity row. If a row with the same primary key exists, it is replaced.

Source

fn delete<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, entity_type: &'life1 str, id: &'life2 str, ) -> Pin<Box<dyn Future<Output = Result<(), IndexerError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Delete a single entity by type and primary key.

Source

fn delete_after_block<'life0, 'life1, 'async_trait>( &'life0 self, entity_type: &'life1 str, block_number: u64, ) -> Pin<Box<dyn Future<Output = Result<u64, IndexerError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Delete all entities of the given type with block_number > block_number. Used during reorg rollback. Returns the number of deleted rows.

Source

fn query<'life0, 'async_trait>( &'life0 self, query: EntityQuery, ) -> Pin<Box<dyn Future<Output = Result<Vec<EntityRow>, IndexerError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Query entities with filters, sorting, and pagination.

Source

fn count<'life0, 'life1, 'async_trait>( &'life0 self, entity_type: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<u64, IndexerError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Count entities of the given type.

Implementors§