feat(database): adding the anyhow result return for user functions
This commit is contained in:
parent
98754efcd5
commit
4394a54b93
1 changed files with 11 additions and 10 deletions
|
|
@ -4,6 +4,7 @@ use sqlx::{
|
||||||
query_as,
|
query_as,
|
||||||
};
|
};
|
||||||
use crate::models::DbUser;
|
use crate::models::DbUser;
|
||||||
|
use anyhow::Result;
|
||||||
|
|
||||||
/// Adding the user (if exist do nothing)
|
/// Adding the user (if exist do nothing)
|
||||||
///
|
///
|
||||||
|
|
@ -12,8 +13,8 @@ use crate::models::DbUser;
|
||||||
///
|
///
|
||||||
/// # Errors
|
/// # Errors
|
||||||
///
|
///
|
||||||
/// Returns `sqlx::Error` if the query fails.
|
/// Returns `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<()> {
|
||||||
query!("INSERT INTO users (user_id) VALUES ($1) ON CONFLICT DO NOTHING", user_id)
|
query!("INSERT INTO users (user_id) VALUES ($1) ON CONFLICT DO NOTHING", user_id)
|
||||||
.execute(db)
|
.execute(db)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
@ -32,8 +33,8 @@ pub async fn create(db: &PgPool, user_id: &str) -> Result<(), sqlx::Error> {
|
||||||
///
|
///
|
||||||
/// # Errors
|
/// # Errors
|
||||||
///
|
///
|
||||||
/// Returns `sqlx::Error` if the query fails.
|
/// Returns `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>> {
|
||||||
let user: Option<DbUser> = query_as!(
|
let user: Option<DbUser> = query_as!(
|
||||||
DbUser,
|
DbUser,
|
||||||
"SELECT * FROM users WHERE user_id = $1",
|
"SELECT * FROM users WHERE user_id = $1",
|
||||||
|
|
@ -52,8 +53,8 @@ pub async fn get(db: &PgPool, user_id: &str) -> Result<Option<DbUser>, sqlx::Err
|
||||||
///
|
///
|
||||||
/// # Errors
|
/// # Errors
|
||||||
///
|
///
|
||||||
/// Returns `sqlx::Error` if the query fails.
|
/// Returns `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<()> {
|
||||||
query!("UPDATE users set is_owner = $1 WHERE user_id = $2", value, user_id)
|
query!("UPDATE users set is_owner = $1 WHERE user_id = $2", value, user_id)
|
||||||
.execute(db)
|
.execute(db)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
@ -68,8 +69,8 @@ pub async fn set_owner(db: &PgPool, user_id: &str, value: bool) -> Result<(), sq
|
||||||
///
|
///
|
||||||
/// # Errors
|
/// # Errors
|
||||||
///
|
///
|
||||||
/// Returns `sqlx::Error` if the query fails.
|
/// Returns `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<()> {
|
||||||
query!(
|
query!(
|
||||||
"UPDATE users set is_buyer = $1 WHERE user_id = $2",
|
"UPDATE users set is_buyer = $1 WHERE user_id = $2",
|
||||||
value,
|
value,
|
||||||
|
|
@ -80,9 +81,9 @@ pub async fn set_buyer(db: &PgPool, user_id: &str, value: bool) -> Result<(), sq
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_or_create(db: &PgPool, user_id: &str) -> Result<DbUser, sqlx::Error> {
|
pub async fn get_or_create(db: &PgPool, user_id: &str) -> Result<DbUser> {
|
||||||
create(db, user_id).await?;
|
create(db, user_id).await?;
|
||||||
get(db, user_id)
|
get(db, user_id)
|
||||||
.await?
|
.await?
|
||||||
.ok_or_else(|| sqlx::Error::RowNotFound)
|
.ok_or_else(|| anyhow::anyhow!("Not able to get or create the user"))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue