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.
This commit is contained in:
@@ -10,11 +10,13 @@ use super::base::{BaseWorker, Worker, WorkerState};
|
|||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
struct ArrivedTransport {
|
struct ArrivedTransport {
|
||||||
id: i32,
|
id: i32,
|
||||||
branch_id: i32,
|
source_branch_id: Option<i32>, // NULL wenn kein Branch in Source-Region
|
||||||
|
target_branch_id: i32,
|
||||||
product_id: Option<i32>, // NULL für leere Transporte
|
product_id: Option<i32>, // NULL für leere Transporte
|
||||||
size: i32,
|
size: i32,
|
||||||
vehicle_id: i32,
|
vehicle_id: i32,
|
||||||
distance: f64,
|
distance: f64,
|
||||||
|
user_id: i32, // User-ID für Notifications
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
@@ -34,8 +36,12 @@ const QUERY_GET_ARRIVED_TRANSPORTS: &str = r#"
|
|||||||
t.product_id,
|
t.product_id,
|
||||||
t.size,
|
t.size,
|
||||||
t.vehicle_id,
|
t.vehicle_id,
|
||||||
b.id AS branch_id,
|
t.source_region_id,
|
||||||
rd.distance AS distance
|
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
|
FROM falukant_data.transport AS t
|
||||||
JOIN falukant_data.vehicle AS v
|
JOIN falukant_data.vehicle AS v
|
||||||
ON v.id = t.vehicle_id
|
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
|
OR (rd.source_region_id = t.target_region_id
|
||||||
AND rd.target_region_id = t.source_region_id))
|
AND rd.target_region_id = t.source_region_id))
|
||||||
AND (rd.transport_mode = vt.transport_mode OR rd.transport_mode IS NULL)
|
AND (rd.transport_mode = vt.transport_mode OR rd.transport_mode IS NULL)
|
||||||
LEFT JOIN falukant_data.branch AS b
|
LEFT JOIN falukant_data.branch AS b_target
|
||||||
ON b.region_id = t.target_region_id
|
ON b_target.region_id = t.target_region_id
|
||||||
AND b.falukant_user_id = v.falukant_user_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
|
WHERE vt.speed > 0
|
||||||
AND t.created_at
|
AND t.created_at
|
||||||
+ (rd.distance / vt.speed::double precision) * INTERVAL '1 minute'
|
+ (rd.distance / vt.speed::double precision) * INTERVAL '1 minute'
|
||||||
|
|||||||
Reference in New Issue
Block a user