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:
@@ -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])?;
|
||||
|
||||
Reference in New Issue
Block a user