Refactoring gruppe und rolle

This commit is contained in:
2026-05-28 20:24:27 +02:00
parent 52c0991545
commit 6810196226
20 changed files with 176 additions and 20 deletions

View File

@@ -1,7 +1,9 @@
pub mod gruppe;
pub mod gruppe_erstelle_input;
pub mod gruppe_erstellen_input;
pub mod gruppe_loeschen_input;
pub mod gruppe_update_input;
pub use gruppe::Gruppe;
pub use gruppe_erstelle_input::GruppeErstelleInput;
pub use gruppe_erstellen_input::GruppeErstelleInput;
pub use gruppe_loeschen_input::GruppeLoeschenInput;
pub use gruppe_update_input::GruppeUpdateInput;

View File

@@ -0,0 +1,9 @@
use async_graphql::InputObject;
use crate::scalar::Id;
#[derive(InputObject)]
pub struct GruppeLoeschenInput {
/// Die ID einer Gruppe
pub id: Id,
}

View File

@@ -1,7 +1,11 @@
use crate::scalar::Id;
use async_graphql::InputObject;
#[derive(InputObject)]
pub struct GruppeUpdateInput {
/// Die ID einer Gruppe
pub id: Id,
/// Der Name einer Gruppe
pub gruppenname: String,
}

View File

@@ -1,6 +1,7 @@
mod gruppe_alle;
mod gruppe_dataloader;
mod gruppe_erstellen;
mod gruppe_loeschen;
mod gruppe_update;
#[derive(Debug, Clone)]

View File

@@ -0,0 +1,24 @@
use anyhow::Error;
use super::Repository;
use crate::database::Queryer;
use crate::domain::gruppe::{entity, model};
impl Repository {
pub async fn gruppe_loeschen<'c, C: Queryer<'c>>(
&self,
db: C,
gruppe: &entity::Gruppe,
) -> Result<model::Gruppe, Error> {
const QUERY: &str = r#"
DELETE FROM gruppen WHERE id=$1 RETURNING id, gruppenname, erstellt_am, geaendert_am;
"#;
let gruppe = sqlx::query_as::<_, model::Gruppe>(QUERY)
.bind(gruppe.id)
.fetch_one(db)
.await?;
Ok(gruppe)
}
}

View File

@@ -1,6 +1,7 @@
mod gruppe_alle;
mod gruppe_dataloader;
mod gruppe_erstellen;
mod gruppe_loeschen;
mod gruppe_update;
use super::repository::Repository;

View File

@@ -0,0 +1,25 @@
use anyhow::Error;
use chrono::Utc;
use super::Service;
use crate::domain::gruppe::{
entity,
model::{self, GruppeLoeschenInput},
};
impl Service {
pub async fn gruppe_loeschen(
&self,
input: GruppeLoeschenInput,
) -> Result<model::Gruppe, Error> {
let gruppe_input = entity::Gruppe {
id: input.id,
gruppenname: String::new(),
erstellt_am: None,
geaendert_am: Some(Utc::now()),
};
let gruppe = self.repo.gruppe_loeschen(&self.db, &gruppe_input).await?;
Ok(gruppe)
}
}

View File

@@ -17,7 +17,7 @@ impl Service {
geaendert_am: Some(Utc::now()),
};
let gruppe = self.repo.gruppe_erstellen(&self.db, &gruppe_input).await?;
let gruppe = self.repo.gruppe_update(&self.db, &gruppe_input).await?;
Ok(gruppe)
}
}