Refactor SQL execution in BaseWorker: Updated the money update logic to register and execute prepared statements by name, enhancing clarity and consistency with existing code. Improved comments for better understanding of numeric type handling in SQL queries.

This commit is contained in:
Torsten Schulz (local)
2025-12-01 11:09:17 +01:00
parent 0825c05c31
commit 2c91f1868b

View File

@@ -129,8 +129,8 @@ impl BaseWorker {
// Hinweis: In der bestehenden Datenbank ist `falukant_data.update_money` typischerweise // Hinweis: In der bestehenden Datenbank ist `falukant_data.update_money` typischerweise
// so definiert, dass der Geldbetrag als NUMERIC erwartet wird. Wir casten den // so definiert, dass der Geldbetrag als NUMERIC erwartet wird. Wir casten den
// zweiten Parameter in SQL nach `numeric`, damit der Aufruf auch mit einem // zweiten Parameter in SQL explizit nach `numeric`, damit der Aufruf auch mit
// f64-Wert funktioniert. // einem f64-Wert funktioniert.
const QUERY_UPDATE_MONEY: &str = r#" const QUERY_UPDATE_MONEY: &str = r#"
SELECT falukant_data.update_money( SELECT falukant_data.update_money(
$1::int4, $1::int4,
@@ -153,12 +153,10 @@ impl BaseWorker {
.get() .get()
.map_err(|e| DbError::new(format!("DB-Verbindung fehlgeschlagen: {e}")))?; .map_err(|e| DbError::new(format!("DB-Verbindung fehlgeschlagen: {e}")))?;
// Direkter Aufruf ohne benannte Prepared-Statement-Caches, um // Statement einmalig registrieren und anschließend über den Namen
// Signaturkonflikte bei Schemaänderungen zu vermeiden. // ausführen analog zum restlichen Code.
conn.execute( conn.prepare("update_money", QUERY_UPDATE_MONEY)?;
QUERY_UPDATE_MONEY, conn.execute("update_money", &[&falukant_user_id, &money_change, &action])?;
&[&falukant_user_id, &money_change, &action],
)?;
Ok(()) Ok(())
} }