Refactor notification handling in Workers: Centralize notification insertion and frontend updates by replacing direct SQL queries with dedicated functions. This improves code maintainability and reduces redundancy across character creation, events, and transport processing.

This commit is contained in:
Torsten Schulz (local)
2025-12-22 13:58:17 +01:00
parent a82d554494
commit fce7400303
7 changed files with 183 additions and 47 deletions

View File

@@ -53,9 +53,17 @@ ON CONFLICT (region_id)
DO UPDATE SET weather_type_id = EXCLUDED.weather_type_id;
"#;
pub const QUERY_INSERT_NOTIFICATION: &str = r#"
INSERT INTO falukant_log.notification (user_id, tr, shown, created_at, updated_at)
VALUES ($1, $2, FALSE, NOW(), NOW());
/// Vollständige Notification-Insert-Query (inkl. `character_id`), damit Trigger/Schemaänderungen
/// nicht an fehlenden Spalten scheitern.
pub const QUERY_INSERT_NOTIFICATION_FULL: &str = r#"
INSERT INTO falukant_log.notification (
user_id,
tr,
character_id,
shown,
created_at,
updated_at
) VALUES ($1, $2, $3, FALSE, NOW(), NOW());
"#;
// Product pricing
@@ -295,6 +303,21 @@ pub const QUERY_UPDATE_VEHICLE_AFTER_TRANSPORT: &str = r#"
UPDATE falukant_data.vehicle SET region_id = $2, condition = GREATEST(0, condition - $3::int), available_from = NOW(), updated_at = NOW() WHERE id = $1;
"#;
// Vehicle maintenance (TransportWorker)
pub const QUERY_GET_BROKEN_VEHICLES: &str = r#"
SELECT id AS vehicle_id, falukant_user_id AS user_id
FROM falukant_data.vehicle
WHERE condition <= 0;
"#;
pub const QUERY_DELETE_TRANSPORTS_BY_VEHICLE: &str = r#"
DELETE FROM falukant_data.transport WHERE vehicle_id = $1;
"#;
pub const QUERY_DELETE_VEHICLE: &str = r#"
DELETE FROM falukant_data.vehicle WHERE id = $1;
"#;
pub const QUERY_DELETE_TRANSPORT: &str = r#"
DELETE FROM falukant_data.transport WHERE id = $1;
"#;
@@ -1487,17 +1510,6 @@ pub const QUERY_INSERT_UPDATE_PRODUCTION_LOG: &str = r#"
SET quantity = falukant_log.production.quantity + EXCLUDED.quantity;
"#;
pub const QUERY_ADD_OVERPRODUCTION_NOTIFICATION: &str = r#"
INSERT INTO falukant_log.notification (
user_id,
tr,
character_id,
shown,
created_at,
updated_at
) VALUES ($1, $2, NULL, FALSE, NOW(), NOW());
"#;
// Aliases for personal variants (keeps original prepared statement names used in events.worker)
pub const QUERY_REDUCE_INVENTORY_PERSONAL: &str = QUERY_REDUCE_INVENTORY;
pub const QUERY_DELETE_INVENTORY_PERSONAL: &str = QUERY_DELETE_INVENTORY;