Refactor QUERY_GET_BEST_PRODUCTION SQL query in Worker: Improve readability and maintainability by restructuring the query with clearer aliases and consistent use of COALESCE. Enhance join conditions and ensure proper handling of character health, resulting in more accurate production worth calculations.
This commit is contained in:
@@ -3,6 +3,7 @@ use std::collections::HashMap;
|
||||
use crate::message_broker::MessageBroker;
|
||||
use std::sync::atomic::Ordering;
|
||||
use std::sync::Arc;
|
||||
use std::sync::Mutex;
|
||||
use std::time::{Duration, Instant};
|
||||
|
||||
use crate::db::ConnectionPool;
|
||||
@@ -318,10 +319,36 @@ impl DirectorWorker {
|
||||
conn.prepare("get_to_produce", QUERY_GET_BEST_PRODUCTION)?;
|
||||
let rows = conn.execute("get_to_produce", &[&director.id, &director.branch_id])?;
|
||||
if rows.is_empty() {
|
||||
eprintln!(
|
||||
"[DirectorWorker] Keine Produktionskandidaten für Director {} gefunden.",
|
||||
director.id
|
||||
);
|
||||
// Debug: SQL-Vorschau nur gedrosselt loggen, damit wir die Query testen können
|
||||
// ohne Log-Flut.
|
||||
static LAST_EMPTY_PROD_LOG: Mutex<Option<Instant>> = Mutex::new(None);
|
||||
let mut last = LAST_EMPTY_PROD_LOG.lock().unwrap();
|
||||
let should_log = last
|
||||
.map(|t| t.elapsed().as_secs() >= 60)
|
||||
.unwrap_or(true);
|
||||
if should_log {
|
||||
// SQL ggf. kürzen, um Log-Flut zu vermeiden
|
||||
let mut sql_preview = QUERY_GET_BEST_PRODUCTION.to_string();
|
||||
const MAX_SQL_PREVIEW: usize = 1200;
|
||||
if sql_preview.len() > MAX_SQL_PREVIEW {
|
||||
sql_preview.truncate(MAX_SQL_PREVIEW);
|
||||
sql_preview.push_str(" …");
|
||||
}
|
||||
eprintln!(
|
||||
"[DirectorWorker] Keine Produktionskandidaten für Director {} (branch_id={}). Query (get_to_produce): {} | params: director_id={}, branch_id={}",
|
||||
director.id,
|
||||
director.branch_id,
|
||||
sql_preview,
|
||||
director.id,
|
||||
director.branch_id
|
||||
);
|
||||
*last = Some(Instant::now());
|
||||
} else {
|
||||
eprintln!(
|
||||
"[DirectorWorker] Keine Produktionskandidaten für Director {} gefunden.",
|
||||
director.id
|
||||
);
|
||||
}
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user