From 59e10a3408fa032db5fb6ad6a13314cfb07987fd Mon Sep 17 00:00:00 2001 From: Aaron Wood Date: Sat, 11 Apr 2026 10:45:52 -0400 Subject: [PATCH] feat: add spells, character_spells, conditions tables and roll_log metadata Co-Authored-By: Claude Sonnet 4.6 --- server/migrations/002_spells.sql | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 server/migrations/002_spells.sql diff --git a/server/migrations/002_spells.sql b/server/migrations/002_spells.sql new file mode 100644 index 0000000..99c6ada --- /dev/null +++ b/server/migrations/002_spells.sql @@ -0,0 +1,41 @@ +CREATE TABLE IF NOT EXISTS spells ( + id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(255) NOT NULL, + class ENUM('wizard', 'priest', 'both') NOT NULL, + tier TINYINT NOT NULL, + casting_stat ENUM('INT', 'WIS') NOT NULL, + duration VARCHAR(100) NOT NULL DEFAULT 'Instant', + range VARCHAR(100) NOT NULL DEFAULT 'Near', + is_focus TINYINT NOT NULL DEFAULT 0, + description TEXT NOT NULL DEFAULT '', + UNIQUE KEY uq_spells_name_class (name, class) +); + +CREATE TABLE IF NOT EXISTS character_spells ( + id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, + character_id INT UNSIGNED NOT NULL, + spell_id INT UNSIGNED NOT NULL, + exhausted TINYINT NOT NULL DEFAULT 0, + locked_until DATETIME DEFAULT NULL, + focus_active TINYINT NOT NULL DEFAULT 0, + focus_started_at DATETIME DEFAULT NULL, + UNIQUE KEY uq_char_spell (character_id, spell_id), + FOREIGN KEY (character_id) REFERENCES characters(id) ON DELETE CASCADE, + FOREIGN KEY (spell_id) REFERENCES spells(id) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS character_conditions ( + id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, + character_id INT UNSIGNED NOT NULL, + name VARCHAR(255) NOT NULL, + description TEXT DEFAULT '', + rounds_remaining INT DEFAULT NULL, + expires_at DATETIME DEFAULT NULL, + created_at DATETIME DEFAULT NOW(), + FOREIGN KEY (character_id) REFERENCES characters(id) ON DELETE CASCADE +); + +ALTER TABLE roll_log + ADD COLUMN IF NOT EXISTS subtype VARCHAR(50) DEFAULT NULL, + ADD COLUMN IF NOT EXISTS metadata TEXT DEFAULT NULL, + ADD COLUMN IF NOT EXISTS undone TINYINT NOT NULL DEFAULT 0