better database handling, rwlock daily, some minor other improvements
This commit is contained in:
@@ -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(())
|
||||
}
|
||||
Reference in New Issue
Block a user