diff --git a/src/sql/cleanup_guildless_characters.sql b/src/sql/cleanup_guildless_characters.sql new file mode 100644 index 0000000..007a72f --- /dev/null +++ b/src/sql/cleanup_guildless_characters.sql @@ -0,0 +1,3 @@ +UPDATE `Character` +SET `guild_rank` = NULL, `guild_rank_string` = NULL +WHERE `guild_id` IS NULL; diff --git a/src/world/world/disband_guild.rs b/src/world/world/disband_guild.rs index ddebda4..acee315 100644 --- a/src/world/world/disband_guild.rs +++ b/src/world/world/disband_guild.rs @@ -32,9 +32,6 @@ impl World { map.kick_from_guild(player_id); } - // Wait a few seconds to ensure all characters have been saved. - tokio::time::sleep(tokio::time::Duration::from_secs(5)).await; - let mut conn = match pool.get_conn().await { Ok(conn) => conn, Err(e) => { @@ -54,6 +51,13 @@ impl World { { error!("Error deleting guild: {}", e); } + + if let Err(e) = conn + .query_drop(include_str!("../../sql/cleanup_guildless_characters.sql")) + .await + { + error!("Error deleting guild: {}", e); + } }); } }