2025-03-13 23:40:16 +07:00
|
|
|
use crate::{v1::UsersItemDto, AppState};
|
|
|
|
|
use std::error::Error;
|
2025-02-08 00:58:54 +07:00
|
|
|
|
2025-03-13 23:40:16 +07:00
|
|
|
use super::AuthRegisterRequestDto;
|
2025-02-25 02:00:19 +07:00
|
|
|
|
2025-03-13 23:40:16 +07:00
|
|
|
pub async fn query_user_by_email(
|
|
|
|
|
email: String,
|
2025-02-25 02:00:19 +07:00
|
|
|
state: &AppState,
|
2025-03-13 23:40:16 +07:00
|
|
|
) -> Result<UsersItemDto, Box<dyn Error>> {
|
|
|
|
|
let db = &state.surrealdb;
|
2025-02-26 15:45:05 +07:00
|
|
|
|
2025-03-13 23:40:16 +07:00
|
|
|
let mut result = db
|
|
|
|
|
.query("SELECT * FROM app_users WHERE email = $email LIMIT 1;")
|
|
|
|
|
.bind(("email", email.clone()))
|
|
|
|
|
.await?;
|
2025-02-26 15:45:05 +07:00
|
|
|
|
2025-03-13 23:40:16 +07:00
|
|
|
let user: Option<UsersItemDto> = result.take(0)?;
|
2025-02-26 15:45:05 +07:00
|
|
|
|
2025-03-13 23:40:16 +07:00
|
|
|
user.ok_or_else(|| format!("User not found for email: {}", email).into())
|
2025-02-08 00:58:54 +07:00
|
|
|
}
|
2025-02-26 15:45:05 +07:00
|
|
|
|
2025-03-13 23:40:16 +07:00
|
|
|
pub async fn query_create_user(
|
|
|
|
|
data: AuthRegisterRequestDto,
|
2025-02-26 15:45:05 +07:00
|
|
|
state: &AppState,
|
2025-03-13 23:40:16 +07:00
|
|
|
) -> Result<String, Box<dyn Error>> {
|
|
|
|
|
let db = &state.surrealdb;
|
2025-02-26 15:45:05 +07:00
|
|
|
|
2025-03-13 23:40:16 +07:00
|
|
|
let _record: Option<UsersItemDto> =
|
|
|
|
|
db.create(("app_users", &data.email)).content(data).await?;
|
2025-02-26 15:45:05 +07:00
|
|
|
|
2025-03-13 23:40:16 +07:00
|
|
|
Ok("Success create user".into())
|
2025-02-26 15:45:05 +07:00
|
|
|
}
|