LoaderTrait

Trait LoaderTrait 

Source
pub trait LoaderTrait {
    type Model: ModelTrait;

    // Required methods
    fn load_self<S, C>(
        &self,
        stmt: S,
        relation_enum: <<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Relation,
        db: &C,
    ) -> Result<Vec<Option<<<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model>>, DbErr>
       where C: ConnectionTrait,
             <<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model: Send,
             <<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Relation: Send,
             S: EntityOrSelect<<<Self as LoaderTrait>::Model as ModelTrait>::Entity>;
    fn load_self_many<S, C>(
        &self,
        stmt: S,
        relation_enum: <<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Relation,
        db: &C,
    ) -> Result<Vec<Vec<<<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model>>, DbErr>
       where C: ConnectionTrait,
             <<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model: Send,
             <<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Relation: Send,
             S: EntityOrSelect<<<Self as LoaderTrait>::Model as ModelTrait>::Entity>;
    fn load_self_via<V, C>(
        &self,
        via: V,
        db: &C,
    ) -> Result<Vec<Vec<<<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model>>, DbErr>
       where C: ConnectionTrait,
             V: EntityTrait,
             <<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model: Send,
             <<Self as LoaderTrait>::Model as ModelTrait>::Entity: RelatedSelfVia<V>;
    fn load_self_via_rev<V, C>(
        &self,
        via: V,
        db: &C,
    ) -> Result<Vec<Vec<<<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model>>, DbErr>
       where C: ConnectionTrait,
             V: EntityTrait,
             <<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model: Send,
             <<Self as LoaderTrait>::Model as ModelTrait>::Entity: RelatedSelfVia<V>;
    fn load_one<R, S, C>(
        &self,
        stmt: S,
        db: &C,
    ) -> Result<Vec<Option<R::Model>>, DbErr>
       where C: ConnectionTrait,
             R: EntityTrait,
             S: EntityOrSelect<R>,
             <Self::Model as ModelTrait>::Entity: Related<R>;
    fn load_many<R, S, C>(
        &self,
        stmt: S,
        db: &C,
    ) -> Result<Vec<Vec<R::Model>>, DbErr>
       where C: ConnectionTrait,
             R: EntityTrait,
             S: EntityOrSelect<R>,
             <Self::Model as ModelTrait>::Entity: Related<R>;
    fn load_many_to_many<R, S, V, C>(
        &self,
        stmt: S,
        via: V,
        db: &C,
    ) -> Result<Vec<Vec<R::Model>>, DbErr>
       where C: ConnectionTrait,
             R: EntityTrait,
             S: EntityOrSelect<R>,
             V: EntityTrait,
             V::Model: Send,
             <Self::Model as ModelTrait>::Entity: Related<R>;
}
Expand description

This trait implements the Data Loader API

Required Associated Typesยง

Source

type Model: ModelTrait

Source model

Required Methodsยง

Source

fn load_self<S, C>( &self, stmt: S, relation_enum: <<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Relation, db: &C, ) -> Result<Vec<Option<<<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model>>, DbErr>

Used to eager load self_ref relations

Source

fn load_self_many<S, C>( &self, stmt: S, relation_enum: <<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Relation, db: &C, ) -> Result<Vec<Vec<<<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model>>, DbErr>

Used to eager load self_ref relations in reverse, output is Vec<Model> instead of Option<Model> of load_self.

Source

fn load_self_via<V, C>( &self, via: V, db: &C, ) -> Result<Vec<Vec<<<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model>>, DbErr>

Used to eager load self_ref + via relations

Source

fn load_self_via_rev<V, C>( &self, via: V, db: &C, ) -> Result<Vec<Vec<<<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model>>, DbErr>

Used to eager load self_ref + via relations, but in reverse

Source

fn load_one<R, S, C>( &self, stmt: S, db: &C, ) -> Result<Vec<Option<R::Model>>, DbErr>

Used to eager load has_one relations

Source

fn load_many<R, S, C>( &self, stmt: S, db: &C, ) -> Result<Vec<Vec<R::Model>>, DbErr>

Used to eager load has_many relations

Source

fn load_many_to_many<R, S, V, C>( &self, stmt: S, via: V, db: &C, ) -> Result<Vec<Vec<R::Model>>, DbErr>

Used to eager load many_to_many relations. In SeaORM 2.0 load_many already support M-N relations so this method is not needed, only kept as legacy.

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ยง

Sourceยง

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

Sourceยง

type Model = M

Sourceยง

fn load_self<S, C>( &self, stmt: S, relation_enum: <<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Relation, db: &C, ) -> Result<Vec<Option<<<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model>>, DbErr>

Sourceยง

fn load_self_many<S, C>( &self, stmt: S, relation_enum: <<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Relation, db: &C, ) -> Result<Vec<Vec<<<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model>>, DbErr>

Sourceยง

fn load_self_via<V, C>( &self, _: V, db: &C, ) -> Result<Vec<Vec<<<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model>>, DbErr>

Sourceยง

fn load_self_via_rev<V, C>( &self, _: V, db: &C, ) -> Result<Vec<Vec<<<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model>>, DbErr>

Sourceยง

fn load_one<R, S, C>( &self, stmt: S, db: &C, ) -> Result<Vec<Option<R::Model>>, DbErr>

Sourceยง

fn load_many<R, S, C>( &self, stmt: S, db: &C, ) -> Result<Vec<Vec<R::Model>>, DbErr>

Sourceยง

fn load_many_to_many<R, S, V, C>( &self, stmt: S, via: V, db: &C, ) -> Result<Vec<Vec<R::Model>>, DbErr>

Sourceยง

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

Sourceยง

type Model = M

Sourceยง

fn load_self<S, C>( &self, stmt: S, relation_enum: <<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Relation, db: &C, ) -> Result<Vec<Option<<<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model>>, DbErr>

Sourceยง

fn load_self_many<S, C>( &self, stmt: S, relation_enum: <<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Relation, db: &C, ) -> Result<Vec<Vec<<<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model>>, DbErr>

Sourceยง

fn load_self_via<V, C>( &self, via: V, db: &C, ) -> Result<Vec<Vec<<<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model>>, DbErr>

Sourceยง

fn load_self_via_rev<V, C>( &self, via: V, db: &C, ) -> Result<Vec<Vec<<<<Self as LoaderTrait>::Model as ModelTrait>::Entity as EntityTrait>::Model>>, DbErr>

Sourceยง

fn load_one<R, S, C>( &self, stmt: S, db: &C, ) -> Result<Vec<Option<R::Model>>, DbErr>

Sourceยง

fn load_many<R, S, C>( &self, stmt: S, db: &C, ) -> Result<Vec<Vec<R::Model>>, DbErr>

Sourceยง

fn load_many_to_many<R, S, V, C>( &self, stmt: S, via: V, db: &C, ) -> Result<Vec<Vec<R::Model>>, DbErr>

Implementorsยง