From d03d865f759af3dac2f903dfff1379499f8e6504 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Fri, 5 Dec 2025 14:15:22 +0100 Subject: [PATCH] Refactor ArrivedTransport struct and SQL query in TransportWorker: Updated the ArrivedTransport struct to include source and target branch IDs, and user ID for notifications. Modified the SQL query to join with source and target branches, enhancing transport data retrieval and notification capabilities. --- src/worker/transport.rs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/worker/transport.rs b/src/worker/transport.rs index 1691566..47f5f57 100644 --- a/src/worker/transport.rs +++ b/src/worker/transport.rs @@ -10,11 +10,13 @@ use super::base::{BaseWorker, Worker, WorkerState}; #[derive(Debug, Clone)] struct ArrivedTransport { id: i32, - branch_id: i32, + source_branch_id: Option, // NULL wenn kein Branch in Source-Region + target_branch_id: i32, product_id: Option, // NULL für leere Transporte size: i32, vehicle_id: i32, distance: f64, + user_id: i32, // User-ID für Notifications } #[derive(Debug, Clone)] @@ -34,8 +36,12 @@ const QUERY_GET_ARRIVED_TRANSPORTS: &str = r#" t.product_id, t.size, t.vehicle_id, - b.id AS branch_id, - rd.distance AS distance + t.source_region_id, + t.target_region_id, + b_target.id AS target_branch_id, + b_source.id AS source_branch_id, + rd.distance AS distance, + v.falukant_user_id AS user_id FROM falukant_data.transport AS t JOIN falukant_data.vehicle AS v ON v.id = t.vehicle_id @@ -47,9 +53,12 @@ const QUERY_GET_ARRIVED_TRANSPORTS: &str = r#" OR (rd.source_region_id = t.target_region_id AND rd.target_region_id = t.source_region_id)) AND (rd.transport_mode = vt.transport_mode OR rd.transport_mode IS NULL) - LEFT JOIN falukant_data.branch AS b - ON b.region_id = t.target_region_id - AND b.falukant_user_id = v.falukant_user_id + LEFT JOIN falukant_data.branch AS b_target + ON b_target.region_id = t.target_region_id + AND b_target.falukant_user_id = v.falukant_user_id + LEFT JOIN falukant_data.branch AS b_source + ON b_source.region_id = t.source_region_id + AND b_source.falukant_user_id = v.falukant_user_id WHERE vt.speed > 0 AND t.created_at + (rd.distance / vt.speed::double precision) * INTERVAL '1 minute'