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:
@@ -129,8 +129,8 @@ impl BaseWorker {
|
||||
|
||||
// Hinweis: In der bestehenden Datenbank ist `falukant_data.update_money` typischerweise
|
||||
// so definiert, dass der Geldbetrag als NUMERIC erwartet wird. Wir casten den
|
||||
// zweiten Parameter in SQL explizit nach `numeric`, damit der Aufruf auch mit
|
||||
// einem f64-Wert funktioniert.
|
||||
// zweiten Parameter in SQL explizit nach `numeric`; alle Parameter werden als
|
||||
// Strings übergeben und in SQL auf die Zieltypen gecastet.
|
||||
const QUERY_UPDATE_MONEY: &str = r#"
|
||||
SELECT falukant_data.update_money(
|
||||
$1::int4,
|
||||
@@ -156,7 +156,16 @@ impl BaseWorker {
|
||||
// Statement einmalig registrieren und anschließend über den Namen
|
||||
// ausführen – analog zum restlichen Code.
|
||||
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(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user