Trait LoaderTrait

pub trait LoaderTrait {
    type Model: ModelTrait;

    // Required methods
    fn load_one<'life0, 'life1, 'async_trait, R, S, C>(
        &'life0 self,
        stmt: S,
        db: &'life1 C,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<Option<<R as EntityTrait>::Model>>, DbErr>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             C: ConnectionTrait + 'async_trait,
             R: EntityTrait + 'async_trait,
             <R as EntityTrait>::Model: Send + Sync,
             S: EntityOrSelect<R> + 'async_trait,
             <Self::Model as ModelTrait>::Entity: Related<R>,
             Self: 'async_trait;
    fn load_many<'life0, 'life1, 'async_trait, R, S, C>(
        &'life0 self,
        stmt: S,
        db: &'life1 C,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<Vec<<R as EntityTrait>::Model>>, DbErr>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             C: ConnectionTrait + 'async_trait,
             R: EntityTrait + 'async_trait,
             <R as EntityTrait>::Model: Send + Sync,
             S: EntityOrSelect<R> + 'async_trait,
             <Self::Model as ModelTrait>::Entity: Related<R>,
             Self: 'async_trait;
    fn load_many_to_many<'life0, 'life1, 'async_trait, R, S, V, C>(
        &'life0 self,
        stmt: S,
        via: V,
        db: &'life1 C,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<Vec<<R as EntityTrait>::Model>>, DbErr>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             C: ConnectionTrait + 'async_trait,
             R: EntityTrait + 'async_trait,
             <R as EntityTrait>::Model: Send + Sync,
             S: EntityOrSelect<R> + 'async_trait,
             V: EntityTrait + 'async_trait,
             <V as EntityTrait>::Model: Send + Sync,
             <Self::Model as ModelTrait>::Entity: Related<R>,
             Self: 'async_trait;
}
Expand description

This trait implements the Data Loader API

Required Associated Types§

type Model: ModelTrait

Source model

Required Methods§

fn load_one<'life0, 'life1, 'async_trait, R, S, C>( &'life0 self, stmt: S, db: &'life1 C, ) -> Pin<Box<dyn Future<Output = Result<Vec<Option<<R as EntityTrait>::Model>>, DbErr>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, C: ConnectionTrait + 'async_trait, R: EntityTrait + 'async_trait, <R as EntityTrait>::Model: Send + Sync, S: EntityOrSelect<R> + 'async_trait, <Self::Model as ModelTrait>::Entity: Related<R>, Self: 'async_trait,

Used to eager load has_one relations

fn load_many<'life0, 'life1, 'async_trait, R, S, C>( &'life0 self, stmt: S, db: &'life1 C, ) -> Pin<Box<dyn Future<Output = Result<Vec<Vec<<R as EntityTrait>::Model>>, DbErr>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, C: ConnectionTrait + 'async_trait, R: EntityTrait + 'async_trait, <R as EntityTrait>::Model: Send + Sync, S: EntityOrSelect<R> + 'async_trait, <Self::Model as ModelTrait>::Entity: Related<R>, Self: 'async_trait,

Used to eager load has_many relations

fn load_many_to_many<'life0, 'life1, 'async_trait, R, S, V, C>( &'life0 self, stmt: S, via: V, db: &'life1 C, ) -> Pin<Box<dyn Future<Output = Result<Vec<Vec<<R as EntityTrait>::Model>>, DbErr>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, C: ConnectionTrait + 'async_trait, R: EntityTrait + 'async_trait, <R as EntityTrait>::Model: Send + Sync, S: EntityOrSelect<R> + 'async_trait, V: EntityTrait + 'async_trait, <V as EntityTrait>::Model: Send + Sync, <Self::Model as ModelTrait>::Entity: Related<R>, Self: 'async_trait,

Used to eager load many_to_many relations

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.

Implementations on Foreign Types§

§

impl<M> LoaderTrait for &[M]
where M: ModelTrait + Sync,

§

type Model = M

§

fn load_one<'life0, 'life1, 'async_trait, R, S, C>( &'life0 self, stmt: S, db: &'life1 C, ) -> Pin<Box<dyn Future<Output = Result<Vec<Option<<R as EntityTrait>::Model>>, DbErr>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, C: ConnectionTrait + 'async_trait, R: EntityTrait + 'async_trait, <R as EntityTrait>::Model: Send + Sync, S: EntityOrSelect<R> + 'async_trait, <<&[M] as LoaderTrait>::Model as ModelTrait>::Entity: Related<R>, &[M]: 'async_trait,

§

fn load_many<'life0, 'life1, 'async_trait, R, S, C>( &'life0 self, stmt: S, db: &'life1 C, ) -> Pin<Box<dyn Future<Output = Result<Vec<Vec<<R as EntityTrait>::Model>>, DbErr>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, C: ConnectionTrait + 'async_trait, R: EntityTrait + 'async_trait, <R as EntityTrait>::Model: Send + Sync, S: EntityOrSelect<R> + 'async_trait, <<&[M] as LoaderTrait>::Model as ModelTrait>::Entity: Related<R>, &[M]: 'async_trait,

§

fn load_many_to_many<'life0, 'life1, 'async_trait, R, S, V, C>( &'life0 self, stmt: S, via: V, db: &'life1 C, ) -> Pin<Box<dyn Future<Output = Result<Vec<Vec<<R as EntityTrait>::Model>>, DbErr>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, C: ConnectionTrait + 'async_trait, R: EntityTrait + 'async_trait, <R as EntityTrait>::Model: Send + Sync, S: EntityOrSelect<R> + 'async_trait, V: EntityTrait + 'async_trait, <V as EntityTrait>::Model: Send + Sync, <<&[M] as LoaderTrait>::Model as ModelTrait>::Entity: Related<R>, &[M]: 'async_trait,

§

impl<M> LoaderTrait for Vec<M>
where M: ModelTrait + Sync,

§

type Model = M

§

fn load_one<'life0, 'life1, 'async_trait, R, S, C>( &'life0 self, stmt: S, db: &'life1 C, ) -> Pin<Box<dyn Future<Output = Result<Vec<Option<<R as EntityTrait>::Model>>, DbErr>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, C: ConnectionTrait + 'async_trait, R: EntityTrait + 'async_trait, <R as EntityTrait>::Model: Send + Sync, S: EntityOrSelect<R> + 'async_trait, <<Vec<M> as LoaderTrait>::Model as ModelTrait>::Entity: Related<R>, Vec<M>: 'async_trait,

§

fn load_many<'life0, 'life1, 'async_trait, R, S, C>( &'life0 self, stmt: S, db: &'life1 C, ) -> Pin<Box<dyn Future<Output = Result<Vec<Vec<<R as EntityTrait>::Model>>, DbErr>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, C: ConnectionTrait + 'async_trait, R: EntityTrait + 'async_trait, <R as EntityTrait>::Model: Send + Sync, S: EntityOrSelect<R> + 'async_trait, <<Vec<M> as LoaderTrait>::Model as ModelTrait>::Entity: Related<R>, Vec<M>: 'async_trait,

§

fn load_many_to_many<'life0, 'life1, 'async_trait, R, S, V, C>( &'life0 self, stmt: S, via: V, db: &'life1 C, ) -> Pin<Box<dyn Future<Output = Result<Vec<Vec<<R as EntityTrait>::Model>>, DbErr>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, C: ConnectionTrait + 'async_trait, R: EntityTrait + 'async_trait, <R as EntityTrait>::Model: Send + Sync, S: EntityOrSelect<R> + 'async_trait, V: EntityTrait + 'async_trait, <V as EntityTrait>::Model: Send + Sync, <<Vec<M> as LoaderTrait>::Model as ModelTrait>::Entity: Related<R>, Vec<M>: 'async_trait,

Implementors§