Backup before cleanup

This commit is contained in:
Joan
2026-02-05 15:00:49 +01:00
parent e6747b1d05
commit 1b7ffd614d
60 changed files with 3013 additions and 460 deletions

View File

@@ -1,18 +1,24 @@
-- Add persistent status effects table
CREATE TABLE IF NOT EXISTS player_status_effects (
DROP TABLE IF EXISTS player_status_effects CASCADE;
CREATE TABLE player_status_effects (
id SERIAL PRIMARY KEY,
player_id INTEGER NOT NULL REFERENCES players(telegram_id) ON DELETE CASCADE,
character_id INTEGER NOT NULL REFERENCES characters(id) ON DELETE CASCADE,
effect_name VARCHAR(50) NOT NULL,
effect_icon VARCHAR(10) NOT NULL,
damage_per_tick INTEGER NOT NULL DEFAULT 0,
effect_type VARCHAR(20) DEFAULT 'damage',
value INTEGER DEFAULT 0,
ticks_remaining INTEGER NOT NULL,
persist_after_combat BOOLEAN DEFAULT FALSE,
source VARCHAR(50),
applied_at FLOAT NOT NULL,
CONSTRAINT valid_ticks CHECK (ticks_remaining >= 0),
CONSTRAINT valid_damage CHECK (damage_per_tick >= 0)
);
-- Create index for efficient querying by player
CREATE INDEX IF NOT EXISTS idx_status_effects_player ON player_status_effects(player_id);
CREATE INDEX IF NOT EXISTS idx_status_effects_player ON player_status_effects(character_id);
-- Create index for background processor to find active effects
CREATE INDEX IF NOT EXISTS idx_status_effects_active ON player_status_effects(player_id, ticks_remaining) WHERE ticks_remaining > 0;
CREATE INDEX IF NOT EXISTS idx_status_effects_active ON player_status_effects(character_id, ticks_remaining) WHERE ticks_remaining > 0;