Fix regression deleting expedition from db

Set expedition's instance id NULL instead of deleting it from the
database when instances are deleted. Only expedition functions
should delete expeditions

This fixes a regression caused by removing foreign key constraints

The expedition_details row was being deleted and not the corresponding
expedition_members and expedition_lockouts rows. Any characters inside
the members table could no longer join expeditions
This commit is contained in:
hg
2020-07-10 22:35:39 -04:00
parent cb4a117503
commit 15235d77f7
2 changed files with 3 additions and 3 deletions
+2 -2
View File
@@ -496,7 +496,7 @@ void Database::DeleteInstance(uint16 instance_id)
query = fmt::format("DELETE FROM dynamic_zones WHERE instance_id={}", instance_id);
QueryDatabase(query);
query = fmt::format("DELETE FROM expedition_details WHERE instance_id={}", instance_id);
query = fmt::format("UPDATE expedition_details SET instance_id = NULL WHERE instance_id={}", instance_id);
QueryDatabase(query);
BuryCorpsesInInstance(instance_id);
@@ -589,7 +589,7 @@ void Database::PurgeExpiredInstances()
QueryDatabase(fmt::format("DELETE FROM spawn_condition_values WHERE instance_id IN ({})", imploded_instance_ids));
QueryDatabase(fmt::format("UPDATE character_corpses SET is_buried = 1, instance_id = 0 WHERE instance_id IN ({})", imploded_instance_ids));
QueryDatabase(fmt::format("DELETE FROM dynamic_zones WHERE instance_id IN ({})", imploded_instance_ids));
QueryDatabase(fmt::format("DELETE FROM expedition_details WHERE instance_id IN ({})", imploded_instance_ids));
QueryDatabase(fmt::format("UPDATE expedition_details SET instance_id = NULL WHERE instance_id IN ({})", imploded_instance_ids));
}
void Database::SetInstanceDuration(uint16 instance_id, uint32 new_duration)