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

    const TABLE_NAME: &'static str;

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

    fn try_migrate(_bytes: &[u8]) -> Option<Self::E> { ... }
    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

The partition key used in that table

The sort key used int that table

They type for an entry in that table

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

Required Associated Constants

The name of the table in the database

Required Methods

Provided Methods

Try migrating an entry from an older version

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.

Implementors