-- ── module-uo's teardown ────────────────────────────────────────────────── -- -- Destructive, and run ONLY by an explicit admin purge (MODULE_API.md §2.6). -- Nothing on the boot path ever executes this file — uninstalling a module -- leaves its data alone, and removing the data is a separate decision an -- operator has to make on purpose. -- -- It exists because `schema.sql` does. A module that can create tables and -- cannot drop them leaves an operator with orphaned data and no supported way -- to remove it, which is why core refuses to load a module that declares one -- without the other. -- -- **The order is the reverse of creation, and that is load-bearing**: two of -- these tables carry a foreign key into core's `users`, and several reference -- each other. Dropping a parent before its children fails on the constraint, -- and a purge that fails halfway is worse than one that does not run — it -- leaves exactly the orphaned data this file exists to remove. `IF EXISTS` on -- every line so a partially-installed module still tears down cleanly. -- -- What is NOT here, deliberately: rows this module wrote into core's tables. -- `notification_subs` rows for `shard.*` streams and `announce_job_legs` rows -- with leg `towncrier` belong to core's tables, and a module does not delete -- from those — core prunes them when it drops the registrations, which it can -- do because it knows which registrant owned what. The two `settings` rows -- schema.sql seeds (`game_account_signup`, `uo_link_protocol_3_migrated`) are -- the same case with an extra reason: the second is a one-shot MIGRATION -- marker, and deleting it would re-arm a protocol bump against tables this -- file has just dropped. DROP TABLE IF EXISTS `shard_atlas_pending`; DROP TABLE IF EXISTS `shard_atlas_meta`; DROP TABLE IF EXISTS `shard_cliloc_meta`; DROP TABLE IF EXISTS `shard_clilocs`; DROP TABLE IF EXISTS `shard_champion_spawns`; DROP TABLE IF EXISTS `shard_landmarks`; DROP TABLE IF EXISTS `shard_regions`; DROP TABLE IF EXISTS `shard_spawn_point_types`; DROP TABLE IF EXISTS `shard_spawn_points`; DROP TABLE IF EXISTS `shard_spawn_creatures`; DROP TABLE IF EXISTS `shard_feature_visibility`; DROP TABLE IF EXISTS `shard_vendor_items`; DROP TABLE IF EXISTS `shard_vendors`; DROP TABLE IF EXISTS `shard_points_boards`; DROP TABLE IF EXISTS `shard_ruleset`; DROP TABLE IF EXISTS `shard_presence`; DROP TABLE IF EXISTS `shard_governor_terms`; DROP TABLE IF EXISTS `shard_governors`; DROP TABLE IF EXISTS `shard_guilds`; DROP TABLE IF EXISTS `shard_pages`; DROP TABLE IF EXISTS `shard_champs`; DROP TABLE IF EXISTS `shard_account_links`; DROP TABLE IF EXISTS `shard_houses`; DROP TABLE IF EXISTS `shard_economy`; DROP TABLE IF EXISTS `shard_online`; DROP TABLE IF EXISTS `shard_events`; DROP TABLE IF EXISTS `uo_link_config`;