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

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)

View File

@ -1,7 +1,7 @@
CREATE TABLE `expedition_details` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`uuid` VARCHAR(36) NOT NULL,
`instance_id` INT(10) NOT NULL,
`instance_id` INT(10) NULL DEFAULT 0,
`expedition_name` VARCHAR(128) NOT NULL,
`leader_id` INT(10) UNSIGNED NOT NULL DEFAULT 0,
`min_players` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0,