feat(database/user): adding the database macros

This commit is contained in:
Raphael 2026-02-17 12:13:15 +01:00 committed by Raphaël
parent 89a79dd3cb
commit 746f4a2d1e

View file

@ -1,7 +1,7 @@
use sqlx::{ use sqlx::{
PgPool, PgPool,
query, query,
query_as query_as,
}; };
use crate::models::DbUser; use crate::models::DbUser;
@ -14,10 +14,7 @@ use crate::models::DbUser;
/// ///
/// Returns `sqlx::Error` if the query fails. /// Returns `sqlx::Error` if the query fails.
pub async fn create(db: &PgPool, user_id: &str) -> Result<(), sqlx::Error> { pub async fn create(db: &PgPool, user_id: &str) -> Result<(), sqlx::Error> {
query( query!("INSERT INTO users (user_id) VALUES ($1) ON CONFLICT DO NOTHING", user_id)
"INSERT INTO users (user_id) VALUES ($1) ON CONFLICT DO NOTHING"
)
.bind(user_id)
.execute(db) .execute(db)
.await?; .await?;
Ok(()) Ok(())
@ -37,10 +34,11 @@ pub async fn create(db: &PgPool, user_id: &str) -> Result<(), sqlx::Error> {
/// ///
/// Returns `sqlx::Error` if the query fails. /// Returns `sqlx::Error` if the query fails.
pub async fn get(db: &PgPool, user_id: &str) -> Result<Option<DbUser>, sqlx::Error> { pub async fn get(db: &PgPool, user_id: &str) -> Result<Option<DbUser>, sqlx::Error> {
let user: Option<DbUser> = query_as::<_, DbUser>( let user: Option<DbUser> = query_as!(
DbUser,
"SELECT * FROM users WHERE user_id = $1", "SELECT * FROM users WHERE user_id = $1",
user_id,
) )
.bind(user_id)
.fetch_optional(db) .fetch_optional(db)
.await?; .await?;
Ok(user) Ok(user)
@ -56,11 +54,7 @@ pub async fn get(db: &PgPool, user_id: &str) -> Result<Option<DbUser>, sqlx::Err
/// ///
/// Returns `sqlx::Error` if the query fails. /// Returns `sqlx::Error` if the query fails.
pub async fn set_owner(db: &PgPool, user_id: &str, value: bool) -> Result<(), sqlx::Error> { pub async fn set_owner(db: &PgPool, user_id: &str, value: bool) -> Result<(), sqlx::Error> {
query( query!("UPDATE users set is_owner = $1 WHERE user_id = $2", value, user_id)
"UPDATE users set is_owner = $1 WHERE user_id = $2",
)
.bind(value)
.bind(user_id)
.execute(db) .execute(db)
.await?; .await?;
Ok(()) Ok(())
@ -76,11 +70,11 @@ pub async fn set_owner(db: &PgPool, user_id: &str, value: bool) -> Result<(), sq
/// ///
/// Returns `sqlx::Error` if the query fails. /// Returns `sqlx::Error` if the query fails.
pub async fn set_buyer(db: &PgPool, user_id: &str, value: bool) -> Result<(), sqlx::Error> { pub async fn set_buyer(db: &PgPool, user_id: &str, value: bool) -> Result<(), sqlx::Error> {
query( query!(
"UPDATE users set is_buyer = $1 WHERE user_id = $2", "UPDATE users set is_buyer = $1 WHERE user_id = $2",
value,
user_id
) )
.bind(value)
.bind(user_id)
.execute(db) .execute(db)
.await?; .await?;
Ok(()) Ok(())