Enhance relationship deletion process in character management: Implement detailed logging for deleted relationships, including related user and character IDs, and relationship types. Introduce special notifications for engaged relationships to improve user awareness during character events.
This commit is contained in:
@@ -3,6 +3,7 @@ use crate::message_broker::MessageBroker;
|
||||
use rand::distributions::{Distribution, Uniform};
|
||||
use rand::rngs::StdRng;
|
||||
use rand::SeedableRng;
|
||||
use serde_json::json;
|
||||
use std::sync::atomic::Ordering;
|
||||
use std::sync::Arc;
|
||||
use std::time::{Duration, Instant};
|
||||
@@ -578,7 +579,46 @@ impl UserCharacterWorker {
|
||||
conn.prepare("delete_election_candidate", QUERY_DELETE_ELECTION_CANDIDATE)?;
|
||||
|
||||
conn.execute("delete_director", &[&character_id])?;
|
||||
conn.execute("delete_relationship", &[&character_id])?;
|
||||
|
||||
// Relationships löschen mit Logging und spezieller Notification für Verlobungen
|
||||
let rel_result = conn.execute("delete_relationship", &[&character_id])?;
|
||||
for row in rel_result {
|
||||
let related_user_id = row
|
||||
.get("related_user_id")
|
||||
.and_then(|v| v.parse::<i32>().ok());
|
||||
let related_character_id = row
|
||||
.get("related_character_id")
|
||||
.and_then(|v| v.parse::<i32>().ok());
|
||||
let relationship_type_tr = row
|
||||
.get("relationship_type_tr")
|
||||
.and_then(|v| v.as_str())
|
||||
.map(|s| s.to_string());
|
||||
|
||||
// Logging: Relationship wurde gelöscht
|
||||
eprintln!(
|
||||
"[UserCharacterWorker] Relationship gelöscht: character_id={}, related_character_id={}, related_user_id={:?}, relationship_type={:?}",
|
||||
character_id,
|
||||
related_character_id.unwrap_or(-1),
|
||||
related_user_id,
|
||||
relationship_type_tr
|
||||
);
|
||||
|
||||
if let Some(uid) = related_user_id {
|
||||
use crate::worker::insert_notification;
|
||||
// Spezielle Notification für Verlobungen
|
||||
if relationship_type_tr.as_deref() == Some("engaged") {
|
||||
let notification_json = serde_json::json!({
|
||||
"tr": "relationship.engaged_character_death",
|
||||
"character_id": related_character_id
|
||||
});
|
||||
insert_notification(&self.base.pool, uid, ¬ification_json.to_string(), related_character_id)?;
|
||||
} else {
|
||||
use crate::worker::insert_notification;
|
||||
insert_notification(&self.base.pool, uid, "relationship_death", None)?;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
conn.execute("delete_child_relation", &[&character_id])?;
|
||||
conn.execute("delete_knowledge", &[&character_id])?;
|
||||
conn.execute("delete_debtors_prism", &[&character_id])?;
|
||||
|
||||
Reference in New Issue
Block a user