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.

This commit is contained in:
Torsten Schulz (local)
2025-12-01 10:39:32 +01:00
parent 7ae2f0c6c9
commit 6f9e13b290

View File

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