summaryrefslogtreecommitdiffstats
path: root/src/server/database.rs
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-10-29 17:02:49 +0100
committersalmonik <salmonik@tuta.io>2026-10-29 17:02:49 +0100
commit3b50928cb083b104043ac65433ed090c87731eb7 (patch)
tree1d65beaaa68188c521b0d7da3f78c847540e5c32 /src/server/database.rs
parentv1.3.1: allow = to increase the bet (diff)
downloadzagan-bet-3b50928cb083b104043ac65433ed090c87731eb7.tar.gz
zagan-bet-3b50928cb083b104043ac65433ed090c87731eb7.zip
v2.0.0: reset plays audit to a generic per-game schema
Diffstat (limited to 'src/server/database.rs')
-rw-r--r--src/server/database.rs28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/server/database.rs b/src/server/database.rs
index f6c8872..2a1fc40 100644
--- a/src/server/database.rs
+++ b/src/server/database.rs
@@ -24,9 +24,8 @@ pub fn init_db(conn: &Connection) {
24 game_type TEXT NOT NULL, 24 game_type TEXT NOT NULL,
25 bet_amount INTEGER NOT NULL, 25 bet_amount INTEGER NOT NULL,
26 winnings INTEGER NOT NULL, 26 winnings INTEGER NOT NULL,
27 reels TEXT NOT NULL DEFAULT '',
28 win_type TEXT NOT NULL DEFAULT '',
29 balance_after INTEGER NOT NULL, 27 balance_after INTEGER NOT NULL,
28 details TEXT NOT NULL DEFAULT '{}',
30 created_at DATETIME DEFAULT CURRENT_TIMESTAMP 29 created_at DATETIME DEFAULT CURRENT_TIMESTAMP
31 )", 30 )",
32 [], 31 [],
@@ -111,20 +110,22 @@ pub fn get_balance(conn: &Connection, username: &str) -> Option<i64> {
111 } 110 }
112} 111}
113 112
114/// Settle one spin and record its audit row in a single transaction. 113/// Settle one play and record its audit row in a single transaction.
115/// 114///
116/// Returns the balance after the spin. All SQL is parameterized: usernames 115/// `details` is a JSON object with game-specific fields (reels, cards,
117/// are data, never part of the statement text. 116/// winning number, crash point, ...). All SQL is parameterized: usernames are
117/// data, never part of the statement text.
118///
119/// Returns the balance after the play.
118#[allow(clippy::too_many_arguments)] 120#[allow(clippy::too_many_arguments)]
119pub fn apply_spin( 121pub fn apply_play(
120 conn: &mut Connection, 122 conn: &mut Connection,
121 session_id: &str, 123 session_id: &str,
122 username: &str, 124 username: &str,
123 game_type: &str, 125 game_type: &str,
124 bet_amount: i64, 126 bet_amount: i64,
125 winnings: i64, 127 winnings: i64,
126 reels: &str, 128 details: &str,
127 win_type: &str,
128) -> rusqlite::Result<i64> { 129) -> rusqlite::Result<i64> {
129 let tx = conn.transaction()?; 130 let tx = conn.transaction()?;
130 131
@@ -150,18 +151,17 @@ pub fn apply_spin(
150 151
151 tx.execute( 152 tx.execute(
152 "INSERT INTO plays 153 "INSERT INTO plays
153 (session_id, username, game_type, bet_amount, winnings, reels, 154 (session_id, username, game_type, bet_amount, winnings,
154 win_type, balance_after) 155 balance_after, details)
155 VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)", 156 VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7)",
156 params![ 157 params![
157 session_id, 158 session_id,
158 username, 159 username,
159 game_type, 160 game_type,
160 bet_amount, 161 bet_amount,
161 winnings, 162 winnings,
162 reels, 163 balance_after,
163 win_type, 164 details
164 balance_after
165 ], 165 ],
166 )?; 166 )?;
167 167