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])?;