From a0f263bb4feae8f7081b94c970c7b6f45b856889 Mon Sep 17 00:00:00 2001 From: Maulana Sodiqin Date: Fri, 21 Mar 2025 13:25:22 +0700 Subject: [PATCH] feat: update query --- src/apps/v1/auth/auth_service.rs | 18 ++++++------- src/apps/v1/users/users_repository.rs | 33 +++--------------------- src/apps/v1/users/users_schema.rs | 37 ++++++++++++++++++++++++--- 3 files changed, 46 insertions(+), 42 deletions(-) diff --git a/src/apps/v1/auth/auth_service.rs b/src/apps/v1/auth/auth_service.rs index cc5f887..e57de29 100644 --- a/src/apps/v1/auth/auth_service.rs +++ b/src/apps/v1/auth/auth_service.rs @@ -11,7 +11,10 @@ use crate::{ UsersSchema, }; use axum::{http::StatusCode, response::Response}; -use surrealdb::sql::{Id, Thing}; +use surrealdb::{ + sql::{Id, Thing}, + Uuid, +}; pub struct AuthService; @@ -140,25 +143,20 @@ impl AuthService { match user_repo .query_create_user(UsersSchema { - id: Some("".to_string()), + id: Uuid::new_v4().to_string(), email: new_user.email.clone(), fullname: new_user.fullname.clone(), password: new_user.password.clone(), - is_active: false, - role_id: "".to_string(), - avatar: Some("".to_string()), phone_number: new_user.phone_number.clone(), referral_code: new_user.referral_code.clone(), referred_by: new_user.referred_by.clone(), - identity_number: Some("".to_string()), student_type: new_user.student_type.clone(), - religion: Some("".to_string()), - gender: Some("".to_string()), - birthdate: Some("".to_string()), - is_profile_completed: Some(false), created_at: Some(get_iso_date()), updated_at: Some(get_iso_date()), role: role_thing, + is_active: false, + is_profile_completed: false, + ..Default::default() }) .await { diff --git a/src/apps/v1/users/users_repository.rs b/src/apps/v1/users/users_repository.rs index a5a7632..b829450 100644 --- a/src/apps/v1/users/users_repository.rs +++ b/src/apps/v1/users/users_repository.rs @@ -1,7 +1,6 @@ use super::{UsersActiveInactiveSchema, UsersSchema, UsersSetNewPasswordSchema}; -use crate::{get_iso_date, AppState, ResourceEnum}; +use crate::{AppState, ResourceEnum}; use anyhow::{bail, Result}; -use surrealdb::Uuid; pub struct UsersRepository<'a> { state: &'a AppState, @@ -19,39 +18,15 @@ impl<'a> UsersRepository<'a> { .await?; match result { Some(response) => Ok(response), - None => { - bail!("User not found") - } + None => bail!("User not found"), } } pub async fn query_create_user(&self, data: UsersSchema) -> Result { - let id = Uuid::new_v4().to_string(); let db = &self.state.surrealdb; - let record: Option = db - .create((ResourceEnum::Users.to_string(), &id)) - .content(UsersSchema { - id: Some(id.clone()), - role_id: data.role_id.clone(), - fullname: data.fullname.clone(), - email: data.email.clone(), - password: data.password.clone(), - avatar: data.avatar.clone(), - phone_number: data.phone_number.clone(), - referral_code: data.referral_code.clone(), - referred_by: data.referred_by.clone(), - identity_number: data.identity_number.clone(), - student_type: data.student_type.clone(), - religion: data.religion.clone(), - gender: data.gender.clone(), - birthdate: data.birthdate.clone(), - is_active: data.is_active.clone(), - is_profile_completed: data.is_profile_completed.clone(), - role: data.role.clone(), - created_at: Some(get_iso_date()), - updated_at: Some(get_iso_date()), - }) + .create((ResourceEnum::Users.to_string(), &data.id)) + .content(data) .await?; match record { Some(_) => Ok("Success create user".into()), diff --git a/src/apps/v1/users/users_schema.rs b/src/apps/v1/users/users_schema.rs index 55612e7..34d2eb9 100644 --- a/src/apps/v1/users/users_schema.rs +++ b/src/apps/v1/users/users_schema.rs @@ -1,9 +1,11 @@ use serde::{Deserialize, Serialize}; -use surrealdb::sql::Thing; +use surrealdb::sql::{Id, Thing}; + +use crate::ResourceEnum; #[derive(Clone, Debug, Serialize, Deserialize)] pub struct UsersSchema { - pub id: Option, + pub id: String, pub role_id: String, pub fullname: String, pub email: String, @@ -18,12 +20,41 @@ pub struct UsersSchema { pub religion: Option, pub gender: Option, pub birthdate: Option, - pub is_profile_completed: Option, + pub is_profile_completed: bool, pub role: Thing, pub created_at: Option, pub updated_at: Option, } +impl Default for UsersSchema { + fn default() -> Self { + UsersSchema { + id: String::new(), + role_id: String::new(), + fullname: String::new(), + email: String::new(), + password: String::new(), + avatar: None, + phone_number: String::new(), + referral_code: None, + referred_by: None, + identity_number: None, + is_active: false, + student_type: String::new(), + religion: None, + gender: None, + birthdate: None, + role: Thing::from(( + ResourceEnum::Roles.to_string(), + Id::String("".to_string()), + )), + is_profile_completed: false, + created_at: None, + updated_at: None, + } + } +} + #[derive(Clone, Debug, Serialize, Deserialize)] pub struct UsersSetNewPasswordSchema { pub email: String,