diff --git a/src/domain/rolle.rs b/src/domain/rolle.rs index 758c8f6..9daf971 100644 --- a/src/domain/rolle.rs +++ b/src/domain/rolle.rs @@ -1,6 +1,7 @@ pub mod dataloader; pub mod entity; pub mod model; +pub mod mutation; pub mod queries; pub mod repository; pub mod service; diff --git a/src/domain/rolle/mutation.rs b/src/domain/rolle/mutation.rs new file mode 100644 index 0000000..f8d4793 --- /dev/null +++ b/src/domain/rolle/mutation.rs @@ -0,0 +1,3 @@ +pub mod rolle; + +pub use rolle::RolleMutation; diff --git a/src/mutations/rolle.rs b/src/domain/rolle/mutation/rolle.rs similarity index 78% rename from src/mutations/rolle.rs rename to src/domain/rolle/mutation/rolle.rs index 5993303..138067e 100644 --- a/src/mutations/rolle.rs +++ b/src/domain/rolle/mutation/rolle.rs @@ -2,6 +2,7 @@ use crate::domain::rolle::{ model::{Rolle, RolleErstelleInput, RolleLoeschenInput, RolleUpdateInput}, service::Service, }; + use async_graphql::{Context, FieldResult}; use sqlx::postgres::PgPool; @@ -21,6 +22,17 @@ impl RolleMutation { Ok(gruppe) } + async fn erstelle_viele_rollen( + &self, + ctx: &Context<'_>, + input: Vec, + ) -> FieldResult> { + let pool = ctx.data::()?.clone(); + + let typen = Service::new(pool).rolle_erstellen_viele(&input).await?; + Ok(typen) + } + async fn update_rolle(&self, ctx: &Context<'_>, input: RolleUpdateInput) -> FieldResult { let pool = ctx.data::()?; diff --git a/src/domain/rolle/repository.rs b/src/domain/rolle/repository.rs index ee945d3..eb5db62 100644 --- a/src/domain/rolle/repository.rs +++ b/src/domain/rolle/repository.rs @@ -2,6 +2,7 @@ mod find_all_rolle; mod find_rolle_by_id; mod rolle_alle; mod rolle_dataloader; +mod rolle_erstelle_viele; mod rolle_erstellen; mod rolle_loeschen; mod rolle_update; diff --git a/src/domain/rolle/repository/rolle_erstelle_viele.rs b/src/domain/rolle/repository/rolle_erstelle_viele.rs new file mode 100644 index 0000000..bb5cd2f --- /dev/null +++ b/src/domain/rolle/repository/rolle_erstelle_viele.rs @@ -0,0 +1,43 @@ +use anyhow::Error; + +use super::Repository; +use crate::database::Queryer; +use crate::domain::rolle::entity; +use crate::domain::rolle::model::{self}; +use crate::scalar::{Id, Time, Ulid}; + +impl Repository { + pub async fn rolle_viele_erstellen<'c, C: Queryer<'c>>( + &self, + db: C, + rollen: &[entity::RolleErstellen], + ) -> Result, Error> { + let rolle_id: Vec = rollen.iter().map(|t| t.rolle_id).collect(); + let id: Vec = rollen.iter().map(|t| t.id).collect(); + let rollenname: Vec = rollen.iter().map(|t| t.rollenname.clone()).collect(); + let erstellt_am: Vec