subgraph/graphql/schema/create_auth_service/delete_user/
mod.rs1use bson::doc;
2use log::debug;
3
4use crate::{
5 configuration::subgraph::data_sources::sql::DialectEnum,
6 data_sources::{sql::PoolEnum, DataSource},
7 graphql::schema::{create_auth_service::ServiceUser, ServiceSchema},
8};
9
10impl ServiceSchema {
11 pub async fn delete_user(
12 data_source: &DataSource,
13 identifier: &str,
14 ) -> Result<(), async_graphql::Error> {
15 debug!("Deleting user: {:?}", identifier);
16 match &data_source {
17 DataSource::Mongo(mongo_ds) => {
18 let filter = doc! {
19 "identifier": &identifier
20 };
21
22 mongo_ds
23 .db
24 .collection::<ServiceUser>("subgraph_user")
25 .delete_one(filter, None)
26 .await
27 .map(|_| ())
28 .map_err(|e| {
29 async_graphql::Error::new(format!(
30 "Failed to delete user from mongo: {:?}",
31 e
32 ))
33 })
34 }
35 DataSource::SQL(sql_ds) => match sql_ds.config.dialect {
36 DialectEnum::MYSQL => {
37 let query = sqlx::query("DELETE FROM subgraph_user WHERE identifier = ?;")
38 .bind(&identifier);
39 match sql_ds.pool.clone() {
40 PoolEnum::MySql(pool) => query.execute(&pool).await,
41 _ => unreachable!(),
42 }
43 .map(|_| ())
44 .map_err(|e| {
45 async_graphql::Error::new(format!(
46 "Failed to delete user from mysql: {:?}",
47 e
48 ))
49 })
50 }
51 DialectEnum::SQLITE => {
52 let query = sqlx::query("DELETE FROM subgraph_user WHERE identifier = ?;")
53 .bind(&identifier);
54
55 match sql_ds.pool.clone() {
56 PoolEnum::SqLite(pool) => query.execute(&pool).await,
57 _ => panic!("Pool not supported."),
58 }
59 .map(|_| ())
60 .map_err(|e| {
61 async_graphql::Error::new(format!(
62 "Failed to delete user from sqlite: {:?}",
63 e
64 ))
65 })
66 }
67 DialectEnum::POSTGRES => {
68 let query = sqlx::query("DELETE FROM subgraph_user WHERE identifier = $1;")
69 .bind(&identifier);
70 match sql_ds.pool.clone() {
71 PoolEnum::Postgres(pool) => query.execute(&pool).await,
72 _ => unreachable!(),
73 }
74 .map(|_| ())
75 .map_err(|e| {
76 async_graphql::Error::new(format!(
77 "Failed to delete user from postgres: {:?}",
78 e
79 ))
80 })
81 }
82 },
83 _ => panic!("Data Source not supported."),
84 }
85 }
86}