From a0d972633a9b41a4b417a59bffdf9c5d36ca4040 Mon Sep 17 00:00:00 2001 From: Billy Chan Date: Wed, 11 Jan 2023 19:12:45 +0800 Subject: [PATCH] Implement LoaderTrait for slices (#1368) --- src/query/loader.rs | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/query/loader.rs b/src/query/loader.rs index 45a5abd6..0e75d5f8 100644 --- a/src/query/loader.rs +++ b/src/query/loader.rs @@ -32,8 +32,35 @@ pub trait LoaderTrait { #[async_trait] impl LoaderTrait for Vec where - M: ModelTrait, - Vec: Sync, + M: ModelTrait + Sync, +{ + type Model = M; + + async fn load_one(&self, stmt: Select, db: &C) -> Result>, DbErr> + where + C: ConnectionTrait, + R: EntityTrait, + R::Model: Send + Sync, + <::Model as ModelTrait>::Entity: Related, + { + self.as_slice().load_one(stmt, db).await + } + + async fn load_many(&self, stmt: Select, db: &C) -> Result>, DbErr> + where + C: ConnectionTrait, + R: EntityTrait, + R::Model: Send + Sync, + <::Model as ModelTrait>::Entity: Related, + { + self.as_slice().load_many(stmt, db).await + } +} + +#[async_trait] +impl LoaderTrait for &[M] +where + M: ModelTrait + Sync, { type Model = M;