Refactor SQL parameter handling in BaseWorker: Updated the execution of the money update query to pass parameters in their natural types, allowing PostgreSQL to handle type casting automatically. Improved comments for clarity on the changes made to ensure compatibility with the existing database schema.
This commit is contained in:
@@ -128,14 +128,14 @@ 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`; alle Parameter werden als
|
||||
// Strings übergeben und in SQL auf die Zieltypen gecastet.
|
||||
// so definiert, dass der Geldbetrag als NUMERIC erwartet wird. Wir übergeben
|
||||
// die Parameter ohne explizite Casts; PostgreSQL castet sie anhand der
|
||||
// Funktionssignatur automatisch.
|
||||
const QUERY_UPDATE_MONEY: &str = r#"
|
||||
SELECT falukant_data.update_money(
|
||||
$1::int4,
|
||||
$2::numeric,
|
||||
$3::text
|
||||
$1,
|
||||
$2,
|
||||
$3
|
||||
);
|
||||
"#;
|
||||
|
||||
@@ -156,16 +156,10 @@ impl BaseWorker {
|
||||
// Statement einmalig registrieren und anschließend über den Namen
|
||||
// ausführen – analog zum restlichen Code.
|
||||
conn.prepare("update_money", QUERY_UPDATE_MONEY)?;
|
||||
// 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],
|
||||
)?;
|
||||
// Parameter werden in ihren natürlichen Typen übergeben; PostgreSQL
|
||||
// wählt anhand der Funktionssignatur die passenden Zieltypen.
|
||||
let money_str = money_change.to_string(); // NUMERIC erwartet String-Repräsentation
|
||||
conn.execute("update_money", &[&falukant_user_id, &money_str, &action])?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user