Refactor money update execution in BaseWorker: Updated parameter handling in SQL execution to pass all values as strings, allowing for proper type casting in the database. Enhanced comments for clarity on the changes made to ensure compatibility with existing database schema.

This commit is contained in:
Torsten Schulz (local)
2025-12-01 11:15:46 +01:00
parent 2c91f1868b
commit 25b69e48fe

View File

@@ -129,8 +129,8 @@ impl BaseWorker {
// Hinweis: In der bestehenden Datenbank ist `falukant_data.update_money` typischerweise // Hinweis: In der bestehenden Datenbank ist `falukant_data.update_money` typischerweise
// so definiert, dass der Geldbetrag als NUMERIC erwartet wird. Wir casten den // so definiert, dass der Geldbetrag als NUMERIC erwartet wird. Wir casten den
// zweiten Parameter in SQL explizit nach `numeric`, damit der Aufruf auch mit // zweiten Parameter in SQL explizit nach `numeric`; alle Parameter werden als
// einem f64-Wert funktioniert. // Strings übergeben und in SQL auf die Zieltypen gecastet.
const QUERY_UPDATE_MONEY: &str = r#" const QUERY_UPDATE_MONEY: &str = r#"
SELECT falukant_data.update_money( SELECT falukant_data.update_money(
$1::int4, $1::int4,
@@ -156,7 +156,16 @@ impl BaseWorker {
// Statement einmalig registrieren und anschließend über den Namen // Statement einmalig registrieren und anschließend über den Namen
// ausführen analog zum restlichen Code. // ausführen analog zum restlichen Code.
conn.prepare("update_money", QUERY_UPDATE_MONEY)?; conn.prepare("update_money", QUERY_UPDATE_MONEY)?;
conn.execute("update_money", &[&falukant_user_id, &money_change, &action])?; // Zur Umgehung von Serialisierungsproblemen werden alle Parameter als
// Strings übergeben und in SQL auf die erwarteten Typen gecastet.
let user_id_str = falukant_user_id.to_string();
let money_str = money_change.to_string();
let action_str = action.to_string();
conn.execute(
"update_money",
&[&user_id_str, &money_str, &action_str],
)?;
Ok(()) Ok(())
} }