neon-sprawl/server/db/migrations/V004__player_perk_state.sql

20 lines
952 B
SQL

-- NEO-47: per-player mastery branch picks and unlocked perk ids.
CREATE TABLE IF NOT EXISTS player_mastery_branch_pick (
player_id TEXT NOT NULL REFERENCES player_position(player_id) ON DELETE CASCADE,
skill_id TEXT NOT NULL,
tier_index INTEGER NOT NULL CHECK (tier_index >= 1),
branch_id TEXT NOT NULL,
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
PRIMARY KEY (player_id, skill_id, tier_index)
);
CREATE TABLE IF NOT EXISTS player_unlocked_perk (
player_id TEXT NOT NULL REFERENCES player_position(player_id) ON DELETE CASCADE,
perk_id TEXT NOT NULL,
unlocked_at TIMESTAMPTZ NOT NULL DEFAULT now(),
PRIMARY KEY (player_id, perk_id)
);
COMMENT ON TABLE player_mastery_branch_pick IS 'Mutually exclusive branch picks per mastery tier (NEO-47); tier 1 pick drives path-auto tier unlocks.';
COMMENT ON TABLE player_unlocked_perk IS 'Unlocked perk ids for a player (NEO-47); additive, idempotent per perk_id.';