From 2c91f1868bae1088a76ae4a283fb44a01e582289 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Mon, 1 Dec 2025 11:09:17 +0100 Subject: [PATCH] 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. --- src/worker/base.rs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/worker/base.rs b/src/worker/base.rs index 10e38f3..b3b1c8a 100644 --- a/src/worker/base.rs +++ b/src/worker/base.rs @@ -129,8 +129,8 @@ 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 nach `numeric`, damit der Aufruf auch mit einem -// f64-Wert funktioniert. +// zweiten Parameter in SQL explizit nach `numeric`, damit der Aufruf auch mit +// einem f64-Wert funktioniert. const QUERY_UPDATE_MONEY: &str = r#" SELECT falukant_data.update_money( $1::int4, @@ -153,12 +153,10 @@ impl BaseWorker { .get() .map_err(|e| DbError::new(format!("DB-Verbindung fehlgeschlagen: {e}")))?; - // Direkter Aufruf ohne benannte Prepared-Statement-Caches, um - // Signaturkonflikte bei Schemaänderungen zu vermeiden. - conn.execute( - QUERY_UPDATE_MONEY, - &[&falukant_user_id, &money_change, &action], - )?; + // Statement einmalig registrieren und anschließend über den Namen + // ausführen – analog zum restlichen Code. + conn.prepare("update_money", QUERY_UPDATE_MONEY)?; + conn.execute("update_money", &[&falukant_user_id, &money_change, &action])?; Ok(()) }