From ae90166adb24611745ac56426cc762a7496aafab Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Mon, 15 Dec 2025 21:20:30 +0100 Subject: [PATCH] Aktualisiere Benachrichtigungsabfragen: Ersetze user_id durch character_id und optimiere die Abfragen zur Auswahl des Charakters. --- src/worker/sql.rs | 54 +++++++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/src/worker/sql.rs b/src/worker/sql.rs index 117f2f1..d0481dd 100644 --- a/src/worker/sql.rs +++ b/src/worker/sql.rs @@ -38,7 +38,14 @@ 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()); +INSERT INTO falukant_log.notification (character_id, tr, shown, created_at, updated_at) +VALUES ( + (SELECT c.id FROM falukant_data.character c WHERE c.user_id = $1 ORDER BY c.id LIMIT 1), + $2, + FALSE, + NOW(), + NOW() +); "#; // Product pricing @@ -242,7 +249,8 @@ DELETE FROM falukant_data.transport WHERE id = $1; "#; pub const QUERY_ADD_TRANSPORT_WAITING_NOTIFICATION: &str = r#" -INSERT INTO falukant_log.notification (user_id, tr, shown, created_at, updated_at) VALUES ($1, $2, FALSE, NOW(), NOW()); +INSERT INTO falukant_log.notification (user_id, tr, shown, created_at, updated_at) +VALUES ((SELECT c.user_id FROM falukant_data.character c WHERE c.user_id = $1 LIMIT 1), $2, FALSE, NOW(), NOW()); "#; pub const QUERY_UPDATE_TRANSPORT_SIZE: &str = r#" @@ -911,33 +919,33 @@ pub const QUERY_USERS_IN_CITIES_OF_REGIONS: &str = r#" "#; pub const QUERY_NOTIFY_OFFICE_EXPIRATION: &str = r#" - INSERT INTO falukant_log.notification - (user_id, tr, created_at, updated_at) - SELECT - po.character_id, - 'notify_office_expiring', - NOW(), - NOW() - FROM falukant_data.political_office AS po - JOIN falukant_type.political_office_type AS pot - ON po.office_type_id = pot.id - WHERE (po.created_at + (pot.term_length * INTERVAL '1 day')) - BETWEEN (NOW() + INTERVAL '2 days') - AND (NOW() + INTERVAL '2 days' + INTERVAL '1 second'); + INSERT INTO falukant_log.notification + (character_id, tr, created_at, updated_at) + SELECT + po.character_id, + 'notify_office_expiring', + NOW(), + NOW() + FROM falukant_data.political_office AS po + JOIN falukant_type.political_office_type AS pot + ON po.office_type_id = pot.id + WHERE (po.created_at + (pot.term_length * INTERVAL '1 day')) + BETWEEN (NOW() + INTERVAL '2 days') + AND (NOW() + INTERVAL '2 days' + INTERVAL '1 second'); "#; pub const QUERY_NOTIFY_ELECTION_CREATED: &str = r#" - INSERT INTO falukant_log.notification - (user_id, tr, created_at, updated_at) - VALUES - ($1, 'notify_election_created', NOW(), NOW()); + INSERT INTO falukant_log.notification + (character_id, tr, created_at, updated_at) + VALUES + ((SELECT c.id FROM falukant_data.character c WHERE c.user_id = $1 ORDER BY c.id LIMIT 1), 'notify_election_created', NOW(), NOW()); "#; pub const QUERY_NOTIFY_OFFICE_FILLED: &str = r#" - INSERT INTO falukant_log.notification - (user_id, tr, created_at, updated_at) - VALUES - ($1, 'notify_office_filled', NOW(), NOW()); + INSERT INTO falukant_log.notification + (character_id, tr, created_at, updated_at) + VALUES + ($1, 'notify_office_filled', NOW(), NOW()); "#; pub const QUERY_GET_USERS_WITH_EXPIRING_OFFICES: &str = r#"