better database handling, rwlock daily, some minor other improvements

This commit is contained in:
2024-12-09 14:07:24 -05:00
parent 4d8848094c
commit 0889297f2a
15 changed files with 86 additions and 92 deletions

View File

@@ -3,12 +3,16 @@ pub mod balance;
pub mod give;
pub mod wager;
pub mod daily;
pub mod leaderboard;
use crate::common::Error;
use poise::serenity_prelude::UserId;
use sqlx::{Row, PgConnection};
use sqlx::{Row, PgExecutor};
pub async fn get_balance(id: UserId, db: &mut PgConnection) -> Result<i32, Error> {
pub async fn get_balance<'a, E>(id: UserId, db: E) -> Result<i32, Error>
where
E: PgExecutor<'a>,
{
let row = sqlx::query("SELECT balance FROM bank WHERE id = $1")
.bind(id.get() as i64)
.fetch_one(db).await.ok();
@@ -22,7 +26,10 @@ pub async fn get_balance(id: UserId, db: &mut PgConnection) -> Result<i32, Error
Ok(balance)
}
pub async fn change_balance(id: UserId, balance: i32, db: &mut PgConnection) -> Result<(), Error> {
pub async fn change_balance<'a, E>(id: UserId, balance: i32, db: E) -> Result<(), Error>
where
E: PgExecutor<'a>,
{
sqlx::query("INSERT INTO bank (id, balance) VALUES ($1, $2) ON CONFLICT (id) DO UPDATE SET balance = EXCLUDED.balance")
.bind(id.get() as i64)
.bind(balance)
@@ -30,9 +37,3 @@ pub async fn change_balance(id: UserId, balance: i32, db: &mut PgConnection) ->
Ok(())
}
pub async fn add_balance(id: UserId, amount: i32, db: &mut PgConnection) -> Result<(), Error> {
let balance = get_balance(id, db).await?;
change_balance(id, balance + amount, db).await?;
Ok(())
}