pub trait TableSchema: Send + Sync + 'static {
    type P: PartitionKey;
    type S: SortKey;
    type E: Entry<Self::P, Self::S>;
    type Filter: Clone + Serialize + for<'de> Deserialize<'de> + Send + Sync + 'static;

    const TABLE_NAME: &'static str;

    // Required method
    fn matches_filter(entry: &Self::E, filter: &Self::Filter) -> bool;

    // Provided method
    fn updated(
        &self,
        _tx: &mut Transaction<'_>,
        _old: Option<&Self::E>,
        _new: Option<&Self::E>
    ) -> TxOpResult<()> { ... }
}
Expand description

Trait for the schema used in a table

Required Associated Types§

source

type P: PartitionKey

The partition key used in that table

source

type S: SortKey

The sort key used int that table

source

type E: Entry<Self::P, Self::S>

They type for an entry in that table

source

type Filter: Clone + Serialize + for<'de> Deserialize<'de> + Send + Sync + 'static

The type for a filter that can be applied to select entries (e.g. filter out deleted entries)

Required Associated Constants§

source

const TABLE_NAME: &'static str

The name of the table in the database

Required Methods§

source

fn matches_filter(entry: &Self::E, filter: &Self::Filter) -> bool

Provided Methods§

source

fn updated( &self, _tx: &mut Transaction<'_>, _old: Option<&Self::E>, _new: Option<&Self::E> ) -> TxOpResult<()>

Actions triggered by data changing in a table. If such actions include updates to the local database that should be applied atomically with the item update itself, a db transaction is provided on which these changes should be done. This function can return a DB error but that’s all.

Object Safety§

This trait is not object safe.

Implementors§