From 25b69e48fe0bffed66f0dbe4313b905f7d85caa0 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Mon, 1 Dec 2025 11:15:46 +0100 Subject: [PATCH] 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. --- src/worker/base.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) 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(()) }