From df7e943a7469d512239d404d43bd7ea4d8d7fea0 Mon Sep 17 00:00:00 2001 From: Docker Build Date: Fri, 8 May 2026 22:03:42 -0400 Subject: [PATCH] Paragon: move module SQL to AC's data/sql/db-* layout for auto-update AzerothCore's DBUpdater scans modules//data/sql/db-{world,characters,auth}/ (see src/server/database/Updater/UpdateFetcher.cpp). The previous modules/mod-paragon/sql/{world,characters}/base/ layout was non-standard and skipped by the updater, so a fresh deploy never had Paragon tables created automatically. Move all five SQL files into the standard layout. Files are idempotent (CREATE TABLE IF NOT EXISTS plus a DELETE+INSERT for the cost table) and now apply on every dbimport / worldserver start, recorded by hash in .updates so re-runs are skipped. Update BUILD-NATIVE.md to drop the manual mysql import section, and document the SQL layout in the mod-paragon README. Co-authored-by: Cursor --- BUILD-NATIVE.md | 25 ++++++++----------- modules/mod-paragon/README.md | 11 ++++++++ .../base/character_paragon_currency.sql | 0 .../base/character_paragon_panel_learned.sql | 0 .../sql/db-world}/base/paragon_gametables.sql | 0 .../db-world}/base/paragon_spell_ae_cost.sql | 0 .../player_class_stats_paragon_basemana.sql | 0 7 files changed, 22 insertions(+), 14 deletions(-) rename modules/mod-paragon/{sql/characters => data/sql/db-characters}/base/character_paragon_currency.sql (100%) rename modules/mod-paragon/{sql/characters => data/sql/db-characters}/base/character_paragon_panel_learned.sql (100%) rename modules/mod-paragon/{sql/world => data/sql/db-world}/base/paragon_gametables.sql (100%) rename modules/mod-paragon/{sql/world => data/sql/db-world}/base/paragon_spell_ae_cost.sql (100%) rename modules/mod-paragon/{sql/world => data/sql/db-world}/base/player_class_stats_paragon_basemana.sql (100%) diff --git a/BUILD-NATIVE.md b/BUILD-NATIVE.md index 64bff57..514f9ae 100644 --- a/BUILD-NATIVE.md +++ b/BUILD-NATIVE.md @@ -172,22 +172,19 @@ The standard AzerothCore three-database layout (`acore_auth`, Easiest path: run the worldserver once with empty databases and let `AC_FORCE_CREATE_DB=1` populate them, **or** use `dbimport` from the -install dir. Then layer the Fractured-specific SQL on top: +install dir. -```bash -cd /modules/mod-paragon/sql +The Fractured-specific SQL (mod-paragon) lives under +`modules/mod-paragon/data/sql/db-{world,characters}/base/` — that's the +**AzerothCore-standard module layout**, which means AC's built-in +DBUpdater picks it up automatically on every `worldserver` / +`dbimport` start. New SQL files are applied; previously-applied ones +are skipped via the hash recorded in `acore_world.updates` / +`acore_characters.updates`. No manual `mysql < ...` steps required for +deploys. -# world DB -mysql -u acore -p acore_world < world/base/paragon_gametables.sql -mysql -u acore -p acore_world < world/base/paragon_spell_ae_cost.sql -mysql -u acore -p acore_world < world/base/player_class_stats_paragon_basemana.sql - -# characters DB -mysql -u acore -p acore_characters < characters/base/character_paragon_currency.sql -``` - -Re-run any module-specific SQL whenever you pull updates that touch -`modules/*/sql/`. +Modify-and-redeploy works the same way: change the file, push, pull on +the VPS, and the next `dbimport` run sees the new hash and re-applies. --- diff --git a/modules/mod-paragon/README.md b/modules/mod-paragon/README.md index 1f4ec6e..819c162 100644 --- a/modules/mod-paragon/README.md +++ b/modules/mod-paragon/README.md @@ -30,3 +30,14 @@ Auto-detected by `modules/CMakeLists.txt` (`GetModuleSourceList` globs every subdirectory). No additional CMake plumbing is needed; rebuild the worldserver image and the loader symbol `Addmod_paragonScripts` gets linked into the static `modules` target. + +## SQL layout + +SQL files live under `data/sql/db-world/base/` and +`data/sql/db-characters/base/` — the standard AzerothCore module path +that the built-in DBUpdater scans (see +`src/server/database/Updater/UpdateFetcher.cpp`). Files placed there +are applied automatically by `worldserver` / `dbimport` on startup and +recorded by hash in the `updates` table of the target database, so +re-runs are idempotent. Any new SQL added under those directories will +be picked up on the next container/server start without manual import. diff --git a/modules/mod-paragon/sql/characters/base/character_paragon_currency.sql b/modules/mod-paragon/data/sql/db-characters/base/character_paragon_currency.sql similarity index 100% rename from modules/mod-paragon/sql/characters/base/character_paragon_currency.sql rename to modules/mod-paragon/data/sql/db-characters/base/character_paragon_currency.sql diff --git a/modules/mod-paragon/sql/characters/base/character_paragon_panel_learned.sql b/modules/mod-paragon/data/sql/db-characters/base/character_paragon_panel_learned.sql similarity index 100% rename from modules/mod-paragon/sql/characters/base/character_paragon_panel_learned.sql rename to modules/mod-paragon/data/sql/db-characters/base/character_paragon_panel_learned.sql diff --git a/modules/mod-paragon/sql/world/base/paragon_gametables.sql b/modules/mod-paragon/data/sql/db-world/base/paragon_gametables.sql similarity index 100% rename from modules/mod-paragon/sql/world/base/paragon_gametables.sql rename to modules/mod-paragon/data/sql/db-world/base/paragon_gametables.sql diff --git a/modules/mod-paragon/sql/world/base/paragon_spell_ae_cost.sql b/modules/mod-paragon/data/sql/db-world/base/paragon_spell_ae_cost.sql similarity index 100% rename from modules/mod-paragon/sql/world/base/paragon_spell_ae_cost.sql rename to modules/mod-paragon/data/sql/db-world/base/paragon_spell_ae_cost.sql diff --git a/modules/mod-paragon/sql/world/base/player_class_stats_paragon_basemana.sql b/modules/mod-paragon/data/sql/db-world/base/player_class_stats_paragon_basemana.sql similarity index 100% rename from modules/mod-paragon/sql/world/base/player_class_stats_paragon_basemana.sql rename to modules/mod-paragon/data/sql/db-world/base/player_class_stats_paragon_basemana.sql