feat(database): adding the anyhow result return for guild_user functions
This commit is contained in:
parent
1363c596b4
commit
98754efcd5
1 changed files with 18 additions and 17 deletions
|
|
@ -1,11 +1,12 @@
|
||||||
use sqlx::{PgPool, query, query_as, query_scalar};
|
use sqlx::{PgPool, query, query_as, query_scalar};
|
||||||
use crate::models::guild_user::DbGuildUser;
|
use crate::models::guild_user::DbGuildUser;
|
||||||
|
use anyhow::Result;
|
||||||
|
|
||||||
pub async fn get(
|
pub async fn get(
|
||||||
db: &PgPool,
|
db: &PgPool,
|
||||||
user_id: &str,
|
user_id: &str,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
) -> Result<Option<DbGuildUser>, sqlx::Error> {
|
) -> Result<Option<DbGuildUser>> {
|
||||||
let guild_user = query_as!(
|
let guild_user = query_as!(
|
||||||
DbGuildUser,
|
DbGuildUser,
|
||||||
"SELECT * FROM guild_users WHERE user_id = $1 AND guild_id = $2",
|
"SELECT * FROM guild_users WHERE user_id = $1 AND guild_id = $2",
|
||||||
|
|
@ -21,7 +22,7 @@ pub async fn create(
|
||||||
db: &PgPool,
|
db: &PgPool,
|
||||||
user_id: &str,
|
user_id: &str,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
) -> Result<(), sqlx::Error> {
|
) -> Result<()> {
|
||||||
query!(
|
query!(
|
||||||
"INSERT INTO guild_users (user_id, guild_id) \
|
"INSERT INTO guild_users (user_id, guild_id) \
|
||||||
VALUES ($1, $2) \
|
VALUES ($1, $2) \
|
||||||
|
|
@ -38,7 +39,7 @@ pub async fn delete(
|
||||||
db: &PgPool,
|
db: &PgPool,
|
||||||
user_id: &str,
|
user_id: &str,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
) -> Result<(), sqlx::Error> {
|
) -> Result<()> {
|
||||||
query!(
|
query!(
|
||||||
"DELETE FROM guild_users WHERE user_id = $1 AND guild_id = $2",
|
"DELETE FROM guild_users WHERE user_id = $1 AND guild_id = $2",
|
||||||
user_id,
|
user_id,
|
||||||
|
|
@ -52,7 +53,7 @@ pub async fn delete(
|
||||||
pub async fn delete_all_in_guild(
|
pub async fn delete_all_in_guild(
|
||||||
db: &PgPool,
|
db: &PgPool,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
) -> Result<(), sqlx::Error> {
|
) -> Result<()> {
|
||||||
query!("DELETE FROM guild_users WHERE guild_id = $1", guild_id)
|
query!("DELETE FROM guild_users WHERE guild_id = $1", guild_id)
|
||||||
.execute(db)
|
.execute(db)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
@ -64,7 +65,7 @@ pub async fn add_xp(
|
||||||
user_id: &str,
|
user_id: &str,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
amount: i32,
|
amount: i32,
|
||||||
) -> Result<(), sqlx::Error> {
|
) -> Result<()> {
|
||||||
query!(
|
query!(
|
||||||
"UPDATE guild_users SET xp = xp + $1 \
|
"UPDATE guild_users SET xp = xp + $1 \
|
||||||
WHERE user_id = $2 AND guild_id = $3",
|
WHERE user_id = $2 AND guild_id = $3",
|
||||||
|
|
@ -82,7 +83,7 @@ pub async fn set_level(
|
||||||
user_id: &str,
|
user_id: &str,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
level: i32,
|
level: i32,
|
||||||
) -> Result<(), sqlx::Error> {
|
) -> Result<()> {
|
||||||
query!(
|
query!(
|
||||||
"UPDATE guild_users SET level = $1 \
|
"UPDATE guild_users SET level = $1 \
|
||||||
WHERE user_id = $2 AND guild_id = $3",
|
WHERE user_id = $2 AND guild_id = $3",
|
||||||
|
|
@ -99,7 +100,7 @@ pub async fn get_xp(
|
||||||
db: &PgPool,
|
db: &PgPool,
|
||||||
user_id: &str,
|
user_id: &str,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
) -> Result<Option<i32>, sqlx::Error> {
|
) -> Result<Option<i32>> {
|
||||||
let xp: Option<i32> = query_scalar(
|
let xp: Option<i32> = query_scalar(
|
||||||
"SELECT xp FROM guild_users WHERE user_id = $1 AND guild_id = $2",
|
"SELECT xp FROM guild_users WHERE user_id = $1 AND guild_id = $2",
|
||||||
)
|
)
|
||||||
|
|
@ -114,7 +115,7 @@ pub async fn get_level(
|
||||||
db: &PgPool,
|
db: &PgPool,
|
||||||
user_id: &str,
|
user_id: &str,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
) -> Result<Option<i32>, sqlx::Error> {
|
) -> Result<Option<i32>> {
|
||||||
let level: Option<i32> = query_scalar("SELECT level FROM guild_users WHERE user_id = $1 AND guild_id = $2")
|
let level: Option<i32> = query_scalar("SELECT level FROM guild_users WHERE user_id = $1 AND guild_id = $2")
|
||||||
.bind(user_id)
|
.bind(user_id)
|
||||||
.bind(guild_id)
|
.bind(guild_id)
|
||||||
|
|
@ -128,7 +129,7 @@ pub async fn set_wl(
|
||||||
user_id: &str,
|
user_id: &str,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
value: bool,
|
value: bool,
|
||||||
) -> Result<(), sqlx::Error> {
|
) -> Result<()> {
|
||||||
query!(
|
query!(
|
||||||
"UPDATE guild_users SET is_wl_user = $1 \
|
"UPDATE guild_users SET is_wl_user = $1 \
|
||||||
WHERE user_id = $2 AND guild_id = $3",
|
WHERE user_id = $2 AND guild_id = $3",
|
||||||
|
|
@ -144,7 +145,7 @@ pub async fn set_wl(
|
||||||
pub async fn get_all_wl(
|
pub async fn get_all_wl(
|
||||||
db: &PgPool,
|
db: &PgPool,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
) -> Result<Vec<DbGuildUser>, sqlx::Error> {
|
) -> Result<Vec<DbGuildUser>> {
|
||||||
let users = query_as!(
|
let users = query_as!(
|
||||||
DbGuildUser,
|
DbGuildUser,
|
||||||
"SELECT * FROM guild_users \
|
"SELECT * FROM guild_users \
|
||||||
|
|
@ -161,7 +162,7 @@ pub async fn set_invited_by(
|
||||||
user_id: &str,
|
user_id: &str,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
inviter_id: &str,
|
inviter_id: &str,
|
||||||
) -> Result<(), sqlx::Error> {
|
) -> Result<()> {
|
||||||
query!(
|
query!(
|
||||||
"UPDATE guild_users SET invited_by = $1 \
|
"UPDATE guild_users SET invited_by = $1 \
|
||||||
WHERE user_id = $2 AND guild_id = $3",
|
WHERE user_id = $2 AND guild_id = $3",
|
||||||
|
|
@ -178,7 +179,7 @@ pub async fn increment_invitations(
|
||||||
db: &PgPool,
|
db: &PgPool,
|
||||||
user_id: &str,
|
user_id: &str,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
) -> Result<(), sqlx::Error> {
|
) -> Result<()> {
|
||||||
query!(
|
query!(
|
||||||
"UPDATE guild_users SET invitation_count = invitation_count + 1 \
|
"UPDATE guild_users SET invitation_count = invitation_count + 1 \
|
||||||
WHERE user_id = $1 AND guild_id = $2",
|
WHERE user_id = $1 AND guild_id = $2",
|
||||||
|
|
@ -194,7 +195,7 @@ pub async fn decrement_invitations(
|
||||||
db: &PgPool,
|
db: &PgPool,
|
||||||
user_id: &str,
|
user_id: &str,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
) -> Result<(), sqlx::Error> {
|
) -> Result<()> {
|
||||||
query!(
|
query!(
|
||||||
"UPDATE guild_users SET invitation_count = GREATEST(invitation_count - 1, 0) \
|
"UPDATE guild_users SET invitation_count = GREATEST(invitation_count - 1, 0) \
|
||||||
WHERE user_id = $1 AND guild_id = $2",
|
WHERE user_id = $1 AND guild_id = $2",
|
||||||
|
|
@ -210,7 +211,7 @@ pub async fn leaderboard_xp(
|
||||||
db: &PgPool,
|
db: &PgPool,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
limit: i64,
|
limit: i64,
|
||||||
) -> Result<Vec<DbGuildUser>, sqlx::Error> {
|
) -> Result<Vec<DbGuildUser>> {
|
||||||
let users = query_as!(
|
let users = query_as!(
|
||||||
DbGuildUser,
|
DbGuildUser,
|
||||||
"SELECT * FROM guild_users \
|
"SELECT * FROM guild_users \
|
||||||
|
|
@ -229,7 +230,7 @@ pub async fn leaderboard_invitations(
|
||||||
db: &PgPool,
|
db: &PgPool,
|
||||||
guild_id: &str,
|
guild_id: &str,
|
||||||
limit: i64,
|
limit: i64,
|
||||||
) -> Result<Vec<DbGuildUser>, sqlx::Error> {
|
) -> Result<Vec<DbGuildUser>> {
|
||||||
let users = query_as!(
|
let users = query_as!(
|
||||||
DbGuildUser,
|
DbGuildUser,
|
||||||
"SELECT * FROM guild_users \
|
"SELECT * FROM guild_users \
|
||||||
|
|
@ -243,9 +244,9 @@ pub async fn leaderboard_invitations(
|
||||||
.await?;
|
.await?;
|
||||||
Ok(users)
|
Ok(users)
|
||||||
}
|
}
|
||||||
pub async fn get_or_create(db: &PgPool, user_id: &str, guild_id: &str) -> Result<DbGuildUser, sqlx::Error> {
|
pub async fn get_or_create(db: &PgPool, user_id: &str, guild_id: &str) -> Result<DbGuildUser> {
|
||||||
create(db, user_id, guild_id).await?;
|
create(db, user_id, guild_id).await?;
|
||||||
get(db, user_id, guild_id)
|
get(db, user_id, guild_id)
|
||||||
.await?
|
.await?
|
||||||
.ok_or_else(|| sqlx::Error::RowNotFound)
|
.ok_or_else(|| sqlx::Error::RowNotFound.into())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue