From f410791d4b7675669c3a0b0c8468bbb1aeeb0dd6 Mon Sep 17 00:00:00 2001 From: keiner Date: Fri, 29 Nov 2024 22:15:30 +0100 Subject: [PATCH] =?UTF-8?q?Benutzer,=20Gruppe,=20Rolle=20=C3=BCberarbeitet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/models/benutzer.rs | 31 +++++++++++++------------------ src/models/gruppe.rs | 30 +++++++++++------------------- src/models/rolle.rs | 31 ++++++++++++------------------- src/queries/rolle.rs | 1 - 4 files changed, 36 insertions(+), 57 deletions(-) diff --git a/src/models/benutzer.rs b/src/models/benutzer.rs index 45d256a..c4759d1 100644 --- a/src/models/benutzer.rs +++ b/src/models/benutzer.rs @@ -1,35 +1,29 @@ -use async_graphql::{Context, FieldResult, Object}; +use async_graphql::{ComplexObject, Context, FieldResult, SimpleObject}; use sqlx::PgPool; use crate::{models::gruppe::Gruppe, scalar::Id}; use super::rolle::Rolle; +#[derive(SimpleObject)] +#[graphql(complex)] pub struct Benutzer { + /// Die UUID eines Benutzers pub id: Id, + + /// Die Kennung des Benutzers pub kennung: String, + + /// Der Vorname des Benutzers pub vorname: String, + + /// Der Nachname des Benutzers pub nachname: String, } -#[Object] +#[ComplexObject] impl Benutzer { - pub async fn id(&self) -> Id { - self.id - } - - pub async fn kennung(&self) -> &str { - &self.kennung - } - - pub async fn vorname(&self) -> &str { - &self.vorname - } - - pub async fn nachname(&self) -> &str { - &self.nachname - } - + /// Die Rollen des Benutzers pub async fn rollen<'ctx>(&self, ctx: &Context<'ctx>) -> FieldResult> { let pool = ctx.data::()?; @@ -53,6 +47,7 @@ impl Benutzer { Ok(rows) } + /// Die Gruppen des Benutzers pub async fn gruppen<'ctx>(&self, ctx: &Context<'ctx>) -> FieldResult> { let pool = ctx.data::()?; diff --git a/src/models/gruppe.rs b/src/models/gruppe.rs index 0d60b54..c52c50a 100644 --- a/src/models/gruppe.rs +++ b/src/models/gruppe.rs @@ -1,30 +1,22 @@ -use async_graphql::Object; +use async_graphql::{ComplexObject, SimpleObject}; use crate::scalar::{Id, Time}; +#[derive(SimpleObject)] +#[graphql(complex)] pub struct Gruppe { + /// Die UUIDl einer Gruppe pub id: Id, + + /// Der Gruppenname pub gruppenname: String, + /// Wann die Gruppe erstellt wurde pub erstellt_am: Time, + + /// Wann die Gruppe geaendert wurde pub geaendert_am: Time, } -#[Object] -impl Gruppe { - pub async fn id(&self) -> Id { - self.id - } - - pub async fn gruppenname(&self) -> &str { - &self.gruppenname - } - - pub async fn erstellt_am(&self) -> Time { - self.erstellt_am - } - - pub async fn geaendert_am(&self) -> Time { - self.geaendert_am - } -} +#[ComplexObject] +impl Gruppe {} diff --git a/src/models/rolle.rs b/src/models/rolle.rs index dc3fa33..be33861 100644 --- a/src/models/rolle.rs +++ b/src/models/rolle.rs @@ -1,37 +1,30 @@ -use async_graphql::{Context, FieldResult, Object}; +use async_graphql::{ComplexObject, Context, FieldResult, SimpleObject}; use sqlx::PgPool; use crate::scalar::{Id, Time}; use super::gruppe::Gruppe; -#[derive(Debug)] +/// Um die Administration zu erleichtern werden Gruppen in die Rollen hinzugefuegt +#[derive(SimpleObject, Debug)] +#[graphql(complex)] pub struct Rolle { + /// Die uuid einer Rolle pub id: Id, + + /// Der Rollenname pub rollenname: String, + /// Wann die Rolle erstellt wurde pub erstellt_am: Time, + + /// Wann die Rolle geaendert wurde pub geaendert_am: Time, } -#[Object] +#[ComplexObject] impl Rolle { - pub async fn id(&self) -> Id { - self.id - } - - pub async fn rollename(&self) -> &str { - &self.rollenname - } - - pub async fn erstellt_am(&self) -> Time { - self.erstellt_am - } - - pub async fn geaendert_am(&self) -> Time { - self.geaendert_am - } - + /// Die Gruppen in einer Rolle pub async fn gruppen<'ctx>(&self, ctx: &Context<'ctx>) -> FieldResult> { let pool = ctx.data::()?; diff --git a/src/queries/rolle.rs b/src/queries/rolle.rs index 27abf20..7472712 100644 --- a/src/queries/rolle.rs +++ b/src/queries/rolle.rs @@ -1,5 +1,4 @@ use async_graphql::{Context, FieldResult, Object}; -use log::debug; use sqlx::postgres::PgPool; use crate::models::rolle::Rolle;