diff --git a/src/worker/base.rs b/src/worker/base.rs index b3b1c8a..36aa61d 100644 --- a/src/worker/base.rs +++ b/src/worker/base.rs @@ -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(()) }