Benutzer, Gruppe, Rolle überarbeitet

This commit is contained in:
keiner 2024-11-29 22:15:30 +01:00
parent fdc57ab13a
commit f410791d4b
4 changed files with 36 additions and 57 deletions

View File

@ -1,35 +1,29 @@
use async_graphql::{Context, FieldResult, Object}; use async_graphql::{ComplexObject, Context, FieldResult, SimpleObject};
use sqlx::PgPool; use sqlx::PgPool;
use crate::{models::gruppe::Gruppe, scalar::Id}; use crate::{models::gruppe::Gruppe, scalar::Id};
use super::rolle::Rolle; use super::rolle::Rolle;
#[derive(SimpleObject)]
#[graphql(complex)]
pub struct Benutzer { pub struct Benutzer {
/// Die UUID eines Benutzers
pub id: Id, pub id: Id,
/// Die Kennung des Benutzers
pub kennung: String, pub kennung: String,
/// Der Vorname des Benutzers
pub vorname: String, pub vorname: String,
/// Der Nachname des Benutzers
pub nachname: String, pub nachname: String,
} }
#[Object] #[ComplexObject]
impl Benutzer { impl Benutzer {
pub async fn id(&self) -> Id { /// Die Rollen des Benutzers
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
}
pub async fn rollen<'ctx>(&self, ctx: &Context<'ctx>) -> FieldResult<Vec<Rolle>> { pub async fn rollen<'ctx>(&self, ctx: &Context<'ctx>) -> FieldResult<Vec<Rolle>> {
let pool = ctx.data::<PgPool>()?; let pool = ctx.data::<PgPool>()?;
@ -53,6 +47,7 @@ impl Benutzer {
Ok(rows) Ok(rows)
} }
/// Die Gruppen des Benutzers
pub async fn gruppen<'ctx>(&self, ctx: &Context<'ctx>) -> FieldResult<Vec<Gruppe>> { pub async fn gruppen<'ctx>(&self, ctx: &Context<'ctx>) -> FieldResult<Vec<Gruppe>> {
let pool = ctx.data::<PgPool>()?; let pool = ctx.data::<PgPool>()?;

View File

@ -1,30 +1,22 @@
use async_graphql::Object; use async_graphql::{ComplexObject, SimpleObject};
use crate::scalar::{Id, Time}; use crate::scalar::{Id, Time};
#[derive(SimpleObject)]
#[graphql(complex)]
pub struct Gruppe { pub struct Gruppe {
/// Die UUIDl einer Gruppe
pub id: Id, pub id: Id,
/// Der Gruppenname
pub gruppenname: String, pub gruppenname: String,
/// Wann die Gruppe erstellt wurde
pub erstellt_am: Time, pub erstellt_am: Time,
/// Wann die Gruppe geaendert wurde
pub geaendert_am: Time, pub geaendert_am: Time,
} }
#[Object] #[ComplexObject]
impl Gruppe { 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
}
}

View File

@ -1,37 +1,30 @@
use async_graphql::{Context, FieldResult, Object}; use async_graphql::{ComplexObject, Context, FieldResult, SimpleObject};
use sqlx::PgPool; use sqlx::PgPool;
use crate::scalar::{Id, Time}; use crate::scalar::{Id, Time};
use super::gruppe::Gruppe; 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 { pub struct Rolle {
/// Die uuid einer Rolle
pub id: Id, pub id: Id,
/// Der Rollenname
pub rollenname: String, pub rollenname: String,
/// Wann die Rolle erstellt wurde
pub erstellt_am: Time, pub erstellt_am: Time,
/// Wann die Rolle geaendert wurde
pub geaendert_am: Time, pub geaendert_am: Time,
} }
#[Object] #[ComplexObject]
impl Rolle { impl Rolle {
pub async fn id(&self) -> Id { /// Die Gruppen in einer Rolle
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
}
pub async fn gruppen<'ctx>(&self, ctx: &Context<'ctx>) -> FieldResult<Vec<Gruppe>> { pub async fn gruppen<'ctx>(&self, ctx: &Context<'ctx>) -> FieldResult<Vec<Gruppe>> {
let pool = ctx.data::<PgPool>()?; let pool = ctx.data::<PgPool>()?;

View File

@ -1,5 +1,4 @@
use async_graphql::{Context, FieldResult, Object}; use async_graphql::{Context, FieldResult, Object};
use log::debug;
use sqlx::postgres::PgPool; use sqlx::postgres::PgPool;
use crate::models::rolle::Rolle; use crate::models::rolle::Rolle;