From 6f9e13b2902fcd4c0eb9996b8507d3d30841a391 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Mon, 1 Dec 2025 10:39:32 +0100 Subject: [PATCH] Update money handling in BaseWorker: Changed SQL query to cast money change to numeric type for compatibility with existing database schema. Updated parameter passing to ensure the value is sent as a string, allowing proper casting in the database. Added comments for clarity on the changes made. --- src/worker/base.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/worker/base.rs b/src/worker/base.rs index 83decca..78939d5 100644 --- a/src/worker/base.rs +++ b/src/worker/base.rs @@ -127,10 +127,14 @@ impl BaseWorker { // Bei Bedarf kann hier später wieder ein expliziter Statuszugriff ergänzt werden. } +// Hinweis: In der bestehenden Datenbank ist `falukant_data.update_money` typischerweise +// so definiert, dass der Geldbetrag als NUMERIC erwartet wird. Um keine +// Signaturkonflikte zu erzeugen, casten wir den zweiten Parameter in SQL nach +// `numeric` und übergeben den Wert als Text. const QUERY_UPDATE_MONEY: &str = r#" SELECT falukant_data.update_money( $1::int4, - $2::float8, + $2::numeric, $3::text ); "#; @@ -154,7 +158,9 @@ impl BaseWorker { conn.prepare("update_money", QUERY_UPDATE_MONEY)?; let p1: &(dyn ToSql + Sync) = &falukant_user_id; - let p2: &(dyn ToSql + Sync) = &money_change; + // Als String übergeben, damit die DB ihn nach NUMERIC casten kann. + let money_str = money_change.to_string(); + let p2: &(dyn ToSql + Sync) = &money_str; let p3: &(dyn ToSql + Sync) = &action; conn.execute("update_money", &[p1, p2, p3])?;