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".