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