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'