Verbessere Fehlerbehandlung in SQL-Abfragen: Füge detaillierte Fehlermeldungen für Vorbereitungs- und Ausführungsfehler in den Director- und Politics-Workern hinzu.
This commit is contained in:
@@ -165,8 +165,9 @@ impl PoliticsWorker {
|
||||
conn.prepare(
|
||||
"count_offices_per_region",
|
||||
QUERY_COUNT_OFFICES_PER_REGION,
|
||||
)?;
|
||||
let rows = conn.execute("count_offices_per_region", &[])?;
|
||||
).map_err(|e| DbError::new(format!("[PoliticsWorker] prepare count_offices_per_region: {e}")))?;
|
||||
let rows = conn.execute("count_offices_per_region", &[])
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] exec count_offices_per_region: {e}")))?;
|
||||
|
||||
let mut result = Vec::with_capacity(rows.len());
|
||||
for row in rows {
|
||||
@@ -202,7 +203,7 @@ impl PoliticsWorker {
|
||||
conn.prepare(
|
||||
"trim_excess_offices_global",
|
||||
QUERY_TRIM_EXCESS_OFFICES_GLOBAL,
|
||||
)?;
|
||||
).map_err(|e| DbError::new(format!("[PoliticsWorker] prepare trim_excess_offices_global: {e}")))?;
|
||||
|
||||
if let Err(err) = conn.execute("trim_excess_offices_global", &[]) {
|
||||
eprintln!(
|
||||
@@ -229,8 +230,10 @@ impl PoliticsWorker {
|
||||
.get()
|
||||
.map_err(|e| DbError::new(format!("DB-Verbindung fehlgeschlagen: {e}")))?;
|
||||
|
||||
conn.prepare("find_office_gaps", QUERY_FIND_OFFICE_GAPS)?;
|
||||
let rows = conn.execute("find_office_gaps", &[])?;
|
||||
conn.prepare("find_office_gaps", QUERY_FIND_OFFICE_GAPS)
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] prepare find_office_gaps: {e}")))?;
|
||||
let rows = conn.execute("find_office_gaps", &[])
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] exec find_office_gaps: {e}")))?;
|
||||
|
||||
if rows.is_empty() {
|
||||
return Ok(());
|
||||
@@ -312,8 +315,10 @@ impl PoliticsWorker {
|
||||
.get()
|
||||
.map_err(|e| DbError::new(format!("DB-Verbindung fehlgeschlagen: {e}")))?;
|
||||
|
||||
conn.prepare("select_needed_elections", QUERY_SELECT_NEEDED_ELECTIONS)?;
|
||||
let rows = conn.execute("select_needed_elections", &[])?;
|
||||
conn.prepare("select_needed_elections", QUERY_SELECT_NEEDED_ELECTIONS)
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] prepare select_needed_elections: {e}")))?;
|
||||
let rows = conn.execute("select_needed_elections", &[])
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] exec select_needed_elections: {e}")))?;
|
||||
|
||||
let mut elections = Vec::with_capacity(rows.len());
|
||||
for row in rows {
|
||||
@@ -342,8 +347,9 @@ impl PoliticsWorker {
|
||||
conn.prepare(
|
||||
"select_elections_needing_candidates",
|
||||
QUERY_SELECT_ELECTIONS_NEEDING_CANDIDATES,
|
||||
)?;
|
||||
let rows = conn.execute("select_elections_needing_candidates", &[])?;
|
||||
).map_err(|e| DbError::new(format!("[PoliticsWorker] prepare select_elections_needing_candidates: {e}")))?;
|
||||
let rows = conn.execute("select_elections_needing_candidates", &[])
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] exec select_elections_needing_candidates: {e}")))?;
|
||||
|
||||
let mut elections = Vec::with_capacity(rows.len());
|
||||
for row in rows {
|
||||
@@ -370,13 +376,14 @@ impl PoliticsWorker {
|
||||
.get()
|
||||
.map_err(|e| DbError::new(format!("DB-Verbindung fehlgeschlagen: {e}")))?;
|
||||
|
||||
conn.prepare("insert_candidates", QUERY_INSERT_CANDIDATES)?;
|
||||
conn.prepare("insert_candidates", QUERY_INSERT_CANDIDATES)
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] prepare insert_candidates: {e}")))?;
|
||||
|
||||
for e in elections {
|
||||
conn.execute(
|
||||
"insert_candidates",
|
||||
&[&e.election_id, &e.region_id, &e.posts_to_fill],
|
||||
)?;
|
||||
).map_err(|err| DbError::new(format!("[PoliticsWorker] exec insert_candidates eid={} rid={}: {}", e.election_id, e.region_id, err)))?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
@@ -389,8 +396,10 @@ impl PoliticsWorker {
|
||||
.get()
|
||||
.map_err(|e| DbError::new(format!("DB-Verbindung fehlgeschlagen: {e}")))?;
|
||||
|
||||
conn.prepare("process_expired_and_fill", QUERY_PROCESS_EXPIRED_AND_FILL)?;
|
||||
let rows = conn.execute("process_expired_and_fill", &[])?;
|
||||
conn.prepare("process_expired_and_fill", QUERY_PROCESS_EXPIRED_AND_FILL)
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] prepare process_expired_and_fill: {e}")))?;
|
||||
let rows = conn.execute("process_expired_and_fill", &[])
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] exec process_expired_and_fill: {e}")))?;
|
||||
|
||||
Ok(rows
|
||||
.into_iter()
|
||||
@@ -433,14 +442,17 @@ impl PoliticsWorker {
|
||||
.get()
|
||||
.map_err(|e| DbError::new(format!("DB-Verbindung fehlgeschlagen: {e}")))?;
|
||||
|
||||
conn.prepare("notify_office_expiration", QUERY_NOTIFY_OFFICE_EXPIRATION)?;
|
||||
conn.execute("notify_office_expiration", &[])?;
|
||||
conn.prepare("notify_office_expiration", QUERY_NOTIFY_OFFICE_EXPIRATION)
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] prepare notify_office_expiration: {e}")))?;
|
||||
conn.execute("notify_office_expiration", &[])
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] exec notify_office_expiration: {e}")))?;
|
||||
|
||||
conn.prepare(
|
||||
"get_users_with_expiring_offices",
|
||||
QUERY_GET_USERS_WITH_EXPIRING_OFFICES,
|
||||
)?;
|
||||
let rows = conn.execute("get_users_with_expiring_offices", &[])?;
|
||||
).map_err(|e| DbError::new(format!("[PoliticsWorker] prepare get_users_with_expiring_offices: {e}")))?;
|
||||
let rows = conn.execute("get_users_with_expiring_offices", &[])
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] exec get_users_with_expiring_offices: {e}")))?;
|
||||
|
||||
for row in rows {
|
||||
if let Some(user_id) = row.get("user_id").and_then(|v| v.parse::<i32>().ok()) {
|
||||
@@ -462,17 +474,20 @@ impl PoliticsWorker {
|
||||
.get()
|
||||
.map_err(|e| DbError::new(format!("DB-Verbindung fehlgeschlagen: {e}")))?;
|
||||
|
||||
conn.prepare("notify_election_created", QUERY_NOTIFY_ELECTION_CREATED)?;
|
||||
conn.prepare("notify_election_created", QUERY_NOTIFY_ELECTION_CREATED)
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] prepare notify_election_created: {e}")))?;
|
||||
|
||||
for uid in user_ids {
|
||||
conn.execute("notify_election_created", &[uid])?;
|
||||
conn.execute("notify_election_created", &[uid])
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] exec notify_election_created uid={}: {}", uid, e)))?;
|
||||
}
|
||||
|
||||
conn.prepare(
|
||||
"get_users_in_regions_with_elections",
|
||||
QUERY_GET_USERS_IN_REGIONS_WITH_ELECTIONS,
|
||||
)?;
|
||||
let rows = conn.execute("get_users_in_regions_with_elections", &[])?;
|
||||
).map_err(|e| DbError::new(format!("[PoliticsWorker] prepare get_users_in_regions_with_elections: {e}")))?;
|
||||
let rows = conn.execute("get_users_in_regions_with_elections", &[])
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] exec get_users_in_regions_with_elections: {e}")))?;
|
||||
|
||||
for row in rows {
|
||||
if let Some(user_id) = row.get("user_id").and_then(|v| v.parse::<i32>().ok()) {
|
||||
@@ -494,7 +509,8 @@ impl PoliticsWorker {
|
||||
.get()
|
||||
.map_err(|e| DbError::new(format!("DB-Verbindung fehlgeschlagen: {e}")))?;
|
||||
|
||||
conn.prepare("notify_office_filled", QUERY_NOTIFY_OFFICE_FILLED)?;
|
||||
conn.prepare("notify_office_filled", QUERY_NOTIFY_OFFICE_FILLED)
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] prepare notify_office_filled: {e}")))?;
|
||||
|
||||
for office in new_offices {
|
||||
// Debug-Logging mit allen Feldern, damit sie aktiv genutzt werden
|
||||
@@ -502,14 +518,16 @@ impl PoliticsWorker {
|
||||
"[PoliticsWorker] Office filled: id={}, type={}, character={}, region={}",
|
||||
office.office_id, office.office_type_id, office.character_id, office.region_id
|
||||
);
|
||||
conn.execute("notify_office_filled", &[&office.character_id])?;
|
||||
conn.execute("notify_office_filled", &[&office.character_id])
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] exec notify_office_filled office_id={} character_id={}: {}", office.office_id, office.character_id, e)))?;
|
||||
}
|
||||
|
||||
conn.prepare(
|
||||
"get_users_with_filled_offices",
|
||||
QUERY_GET_USERS_WITH_FILLED_OFFICES,
|
||||
)?;
|
||||
let rows = conn.execute("get_users_with_filled_offices", &[])?;
|
||||
).map_err(|e| DbError::new(format!("[PoliticsWorker] prepare get_users_with_filled_offices: {e}")))?;
|
||||
let rows = conn.execute("get_users_with_filled_offices", &[])
|
||||
.map_err(|e| DbError::new(format!("[PoliticsWorker] exec get_users_with_filled_offices: {e}")))?;
|
||||
|
||||
for row in rows {
|
||||
if let Some(user_id) = row.get("user_id").and_then(|v| v.parse::<i32>().ok()) {
|
||||
|
||||
Reference in New Issue
Block a user