Refactoring gruppe und rolle
This commit is contained in:
@@ -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;
|
||||
|
||||
9
src/domain/gruppe/model/gruppe_loeschen_input.rs
Normal file
9
src/domain/gruppe/model/gruppe_loeschen_input.rs
Normal 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,
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
mod gruppe_alle;
|
||||
mod gruppe_dataloader;
|
||||
mod gruppe_erstellen;
|
||||
mod gruppe_loeschen;
|
||||
mod gruppe_update;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
|
||||
24
src/domain/gruppe/repository/gruppe_loeschen.rs
Normal file
24
src/domain/gruppe/repository/gruppe_loeschen.rs
Normal 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)
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
mod gruppe_alle;
|
||||
mod gruppe_dataloader;
|
||||
mod gruppe_erstellen;
|
||||
mod gruppe_loeschen;
|
||||
mod gruppe_update;
|
||||
|
||||
use super::repository::Repository;
|
||||
|
||||
25
src/domain/gruppe/service/gruppe_loeschen.rs
Normal file
25
src/domain/gruppe/service/gruppe_loeschen.rs
Normal 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)
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user