Enhance SQL queries and logging in TransportWorker and WeatherWorker: Update weather assignment logic to ensure unique weather types per region, improve distance calculations in transport queries, and refine logging for transport processing. Additionally, adjust notification insert queries to include character_id.
This commit is contained in:
@@ -2,8 +2,8 @@ use crate::db::{ConnectionPool, DbError};
|
||||
use crate::message_broker::MessageBroker;
|
||||
use std::cmp::min;
|
||||
use std::sync::atomic::Ordering;
|
||||
use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::time::{Duration, Instant};
|
||||
|
||||
use super::base::{BaseWorker, Worker, WorkerState};
|
||||
use crate::worker::sql::{
|
||||
@@ -67,7 +67,18 @@ impl TransportWorker {
|
||||
) -> Result<(), DbError> {
|
||||
let transports = Self::load_arrived_transports(pool)?;
|
||||
|
||||
if !transports.is_empty() {
|
||||
eprintln!(
|
||||
"[TransportWorker] {} angekommene Transport(e) gefunden",
|
||||
transports.len()
|
||||
);
|
||||
}
|
||||
|
||||
for t in transports {
|
||||
eprintln!(
|
||||
"[TransportWorker] Verarbeite Transport {} (vehicle_id={}, product_id={:?}, size={})",
|
||||
t.id, t.vehicle_id, t.product_id, t.size
|
||||
);
|
||||
if let Err(err) = Self::handle_arrived_transport(pool, broker, &t) {
|
||||
eprintln!(
|
||||
"[TransportWorker] Fehler beim Verarbeiten von Transport {}: {err}",
|
||||
@@ -87,6 +98,19 @@ impl TransportWorker {
|
||||
conn.prepare("get_arrived_transports", QUERY_GET_ARRIVED_TRANSPORTS)?;
|
||||
let rows = conn.execute("get_arrived_transports", &[])?;
|
||||
|
||||
if rows.is_empty() {
|
||||
// Nur alle 60 Sekunden loggen, um Log-Flut zu vermeiden
|
||||
static LAST_LOG: Mutex<Option<Instant>> = Mutex::new(None);
|
||||
let mut last_log = LAST_LOG.lock().unwrap();
|
||||
let should_log = last_log
|
||||
.map(|t| t.elapsed().as_secs() >= 60)
|
||||
.unwrap_or(true);
|
||||
if should_log {
|
||||
eprintln!("[TransportWorker] Keine angekommenen Transporte gefunden");
|
||||
*last_log = Some(Instant::now());
|
||||
}
|
||||
}
|
||||
|
||||
let mut result = Vec::with_capacity(rows.len());
|
||||
for row in rows {
|
||||
let id = parse_i32(&row, "id", -1);
|
||||
|
||||
Reference in New Issue
Block a user