Trait TapestryChestHandler

Source
pub trait TapestryChestHandler<T: Config> {
    type Error: Display + Debug;

    // Required methods
    fn new() -> Self;
    fn save_tapestry_fragment<'life0, 'life1, 'async_trait, TID>(
        &'life0 self,
        tapestry_id: &'life1 TID,
        tapestry_fragment: TapestryFragment<T>,
        increment: bool,
    ) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>
       where TID: 'async_trait + TapestryId,
             Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn save_tapestry_metadata<'life0, 'async_trait, TID, M>(
        &'life0 self,
        tapestry_id: TID,
        metadata: M,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where TID: 'async_trait + TapestryId,
             M: 'async_trait + Serialize + Debug + Clone + Send + Sync,
             Self: 'async_trait,
             'life0: 'async_trait;
    fn get_instance_index<'life0, 'async_trait, TID>(
        &'life0 self,
        tapestry_id: TID,
    ) -> Pin<Box<dyn Future<Output = Result<Option<u16>>> + Send + 'async_trait>>
       where TID: 'async_trait + TapestryId,
             Self: 'async_trait,
             'life0: 'async_trait;
    fn get_tapestry_fragment<'life0, 'async_trait, TID>(
        &'life0 self,
        tapestry_id: TID,
        instance: Option<u64>,
    ) -> Pin<Box<dyn Future<Output = Result<Option<TapestryFragment<T>>>> + Send + 'async_trait>>
       where TID: 'async_trait + TapestryId,
             Self: 'async_trait,
             'life0: 'async_trait;
    fn get_tapestry_metadata<'life0, 'async_trait, TID, M>(
        &'life0 self,
        tapestry_id: TID,
    ) -> Pin<Box<dyn Future<Output = Result<Option<M>>> + Send + 'async_trait>>
       where TID: 'async_trait + TapestryId,
             M: 'async_trait + DeserializeOwned + Send + Sync,
             Self: 'async_trait,
             'life0: 'async_trait;
    fn delete_tapestry<'life0, 'async_trait, TID>(
        &'life0 self,
        tapestry_id: TID,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where TID: 'async_trait + TapestryId,
             Self: 'async_trait,
             'life0: 'async_trait;
    fn delete_tapestry_fragment<'life0, 'async_trait, TID>(
        &'life0 self,
        tapestry_id: TID,
        instance: Option<u64>,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where TID: 'async_trait + TapestryId,
             Self: 'async_trait,
             'life0: 'async_trait;
}
Expand description

A storage handler trait designed for saving and retrieving fragments of a tapestry.

§Usage

Implementations of TapestryChestHandler should provide the storage and retrieval mechanisms tailored to specific use-cases or storage backends, such as databases, file systems, or in-memory stores.

Required Associated Types§

Source

type Error: Display + Debug

Defines the error type returned by the handler methods.

Required Methods§

Source

fn new() -> Self

Source

fn save_tapestry_fragment<'life0, 'life1, 'async_trait, TID>( &'life0 self, tapestry_id: &'life1 TID, tapestry_fragment: TapestryFragment<T>, increment: bool, ) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>
where TID: 'async_trait + TapestryId, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Saves a tapestry fragment.

Tapestry fragments are stored incrementally, also refered to as “instances”. Each instance is identified by an integer, starting at 1 and incrementing by 1 for each new instance.

This method is executed primarily by the [crate::Loom::weave] function.

§Parameters
  • tapestry_id: Identifies the tapestry.
  • tapestry_fragment: An instance of TapestryFragment to be stored.
  • increment:
    • A boolean flag indicating whether the tapestry instance should be incremented.
    • This should typically be true when saving a new instance of TapestryFragment, and false when updating an existing one.
Source

fn save_tapestry_metadata<'life0, 'async_trait, TID, M>( &'life0 self, tapestry_id: TID, metadata: M, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where TID: 'async_trait + TapestryId, M: 'async_trait + Serialize + Debug + Clone + Send + Sync, Self: 'async_trait, 'life0: 'async_trait,

Save tapestry metadata.

Based on application use cases, you can add aditional data for a given TapestryId

Source

fn get_instance_index<'life0, 'async_trait, TID>( &'life0 self, tapestry_id: TID, ) -> Pin<Box<dyn Future<Output = Result<Option<u16>>> + Send + 'async_trait>>
where TID: 'async_trait + TapestryId, Self: 'async_trait, 'life0: 'async_trait,

Retrieves the index of a tapestry.

Returns None if the tapestry does not exist.

Source

fn get_tapestry_fragment<'life0, 'async_trait, TID>( &'life0 self, tapestry_id: TID, instance: Option<u64>, ) -> Pin<Box<dyn Future<Output = Result<Option<TapestryFragment<T>>>> + Send + 'async_trait>>
where TID: 'async_trait + TapestryId, Self: 'async_trait, 'life0: 'async_trait,

Retrieves the last tapestry fragment, or a fragment at a specified instance.

§Parameters
  • tapestry_id: Identifies the tapestry.
  • instance: The instance of the fragment to retrieve. If None, the method should retrieve the last fragment.
§Returns

On successful retrieval, it returns Ok(Some(TapestryFragment)) or Ok(None) if no fragment was found.

Source

fn get_tapestry_metadata<'life0, 'async_trait, TID, M>( &'life0 self, tapestry_id: TID, ) -> Pin<Box<dyn Future<Output = Result<Option<M>>> + Send + 'async_trait>>
where TID: 'async_trait + TapestryId, M: 'async_trait + DeserializeOwned + Send + Sync, Self: 'async_trait, 'life0: 'async_trait,

Retrieves the last tapestry metadata, or a metadata at a specified instance.

Source

fn delete_tapestry<'life0, 'async_trait, TID>( &'life0 self, tapestry_id: TID, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where TID: 'async_trait + TapestryId, Self: 'async_trait, 'life0: 'async_trait,

Deletes a tapestry and all its instances.

Source

fn delete_tapestry_fragment<'life0, 'async_trait, TID>( &'life0 self, tapestry_id: TID, instance: Option<u64>, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where TID: 'async_trait + TapestryId, Self: 'async_trait, 'life0: 'async_trait,

Deletes a tapestry fragment.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§