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ยง
Sourcetype Model: ModelTrait
type Model: ModelTrait
Source model
Required Methodsยง
Sourcefn 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<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>,
Used to eager load self_ref relations
Sourcefn 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_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>,
Used to eager load self_ref relations in reverse, output is Vec<Model> instead of
Option<Model> of load_self.
Sourcefn 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<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>,
Used to eager load self_ref + via relations
Sourcefn 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_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>,
Used to eager load self_ref + via relations, but in reverse
Sourcefn 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_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>,
Used to eager load has_one relations
Sourcefn 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<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>,
Used to eager load has_many relations
Sourcefn 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>,
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>,
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.