From 24388ba81515c57e812994fdb9147e6de7f3a5b6 Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Wed, 21 Aug 2024 12:38:20 +0200 Subject: Reformat types mod --- src/graphql/types/mod.rs | 1 + src/graphql/types/user.rs | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/graphql/types/mod.rs create mode 100644 src/graphql/types/user.rs (limited to 'src/graphql/types') diff --git a/src/graphql/types/mod.rs b/src/graphql/types/mod.rs new file mode 100644 index 0000000..22d12a3 --- /dev/null +++ b/src/graphql/types/mod.rs @@ -0,0 +1 @@ +pub mod user; diff --git a/src/graphql/types/user.rs b/src/graphql/types/user.rs new file mode 100644 index 0000000..bf9080f --- /dev/null +++ b/src/graphql/types/user.rs @@ -0,0 +1,52 @@ +use crate::state::AppState; +use async_graphql::{Context, Object}; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct User { + pub id: i32, + pub email: String, + pub password: String, + pub is_admin: bool, +} + +#[Object] +impl User { + async fn id(&self) -> i32 { + self.id + } + + async fn email(&self) -> String { + self.email.clone() + } + + async fn password(&self) -> String { + String::from("******") + } + + async fn is_admin(&self) -> bool { + self.is_admin + } +} + +pub async fn get_users<'ctx>(ctx: &Context<'ctx>) -> Result>, String> { + let state = ctx.data::().expect("Can't connect to db"); + let client = &*state.client; + + let rows = client + .query("SELECT id, email, password, is_admin FROM users", &[]) + .await + .unwrap(); + + let users: Vec = rows + .iter() + .map(|row| User { + id: row.get("id"), + email: row.get("email"), + password: row.get("password"), + is_admin: row.get("is_admin"), + }) + .collect(); + + Ok(Some(users)) +} -- cgit v1.2.3-71-g8e6c