rust_forum/src/database/user.rs

76 lines
1.7 KiB
Rust
Raw Normal View History

2024-12-03 21:33:42 +03:00
use chrono::NaiveDate;
use sqlx::{Pool, Postgres};
2024-12-01 22:17:38 +03:00
2024-12-04 23:17:19 +03:00
use crate::feature::user::User;
2024-12-03 21:33:42 +03:00
2024-12-04 23:17:19 +03:00
pub async fn create(
2024-12-03 21:33:42 +03:00
name: &String,
surname: &String,
gender: bool,
birth_date: &NaiveDate,
email: &String,
database_connection: &Pool<Postgres>,
) -> Result<User, sqlx::Error> {
sqlx::query_as!(
User,
r#"
2024-12-04 23:17:19 +03:00
INSERT INTO "user"(name, surname, gender, birth_date, email, role_id)
VALUES ($1, $2, $3, $4, $5, $6)
RETURNING *
2024-12-03 21:33:42 +03:00
"#,
name,
surname,
gender,
birth_date,
2024-12-04 23:17:19 +03:00
email,
2
2024-12-03 21:33:42 +03:00
)
.fetch_one(database_connection)
.await
}
2024-12-04 23:17:19 +03:00
pub async fn read(
2024-12-03 21:33:42 +03:00
email: &String,
database_connection: &Pool<Postgres>,
) -> Result<User, sqlx::Error> {
2024-12-04 23:17:19 +03:00
sqlx::query_as!(
User,
2024-12-03 21:33:42 +03:00
r#"
2024-12-04 23:17:19 +03:00
SELECT * FROM "user" WHERE "email" = $1
"#,
2024-12-03 21:33:42 +03:00
email
2024-12-04 23:17:19 +03:00
)
.fetch_one(database_connection)
.await
2024-12-03 21:33:42 +03:00
}
2024-12-04 23:17:19 +03:00
pub async fn update(
2024-12-03 21:33:42 +03:00
id: i64,
name: &String,
surname: &String,
gender: &bool,
birth_date: &NaiveDate,
email: &String,
2024-12-04 23:17:19 +03:00
role_id: i64,
2024-12-03 21:33:42 +03:00
database_connection: &Pool<Postgres>,
) -> Result<User, sqlx::Error> {
sqlx::query_as!(User,
r#"
2024-12-04 23:17:19 +03:00
UPDATE "user" SET "name" = $1, "surname" = $2, "gender" = $3, "birth_date" = $4, "email" = $5, "role_id" = $6 WHERE "id" = $7
RETURNING *
"#, name, surname, gender, birth_date, email, role_id, id).fetch_one(database_connection).await
2024-12-03 21:33:42 +03:00
}
2024-12-04 23:17:19 +03:00
pub async fn delete(id: i64, database_connection: &Pool<Postgres>) -> Result<User, sqlx::Error> {
2024-12-03 21:33:42 +03:00
sqlx::query_as!(
User,
r#"
DELETE FROM "user" where id = $1
2024-12-04 23:17:19 +03:00
RETURNING *
2024-12-03 21:33:42 +03:00
"#,
id
)
.fetch_one(database_connection)
.await
}