37 lines
1.5 KiB
SQL
37 lines
1.5 KiB
SQL
-- Event Comments and Jackpot Discovery Tables
|
|
-- Part of the hidden "Jackpot" Easter egg feature
|
|
|
|
-- Event comments table (isolated per participant)
|
|
CREATE TABLE event_comments (
|
|
id SERIAL PRIMARY KEY,
|
|
participant_id INTEGER NOT NULL REFERENCES participants(id) ON DELETE CASCADE,
|
|
event_id INTEGER NOT NULL REFERENCES events(id) ON DELETE CASCADE,
|
|
content TEXT NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Indexes for performance
|
|
CREATE INDEX idx_event_comments_participant ON event_comments(participant_id);
|
|
CREATE INDEX idx_event_comments_event ON event_comments(event_id);
|
|
CREATE INDEX idx_event_comments_composite ON event_comments(participant_id, event_id);
|
|
|
|
COMMENT ON TABLE event_comments IS 'Participant feedback comments - visible only to poster (isolated per participant)';
|
|
|
|
-- Jackpot discoveries tracking table
|
|
CREATE TABLE jackpot_discoveries (
|
|
id SERIAL PRIMARY KEY,
|
|
participant_id INTEGER NOT NULL REFERENCES participants(id) ON DELETE CASCADE,
|
|
event_id INTEGER NOT NULL REFERENCES events(id) ON DELETE CASCADE,
|
|
discovered_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
payload TEXT,
|
|
score_before INTEGER,
|
|
score_after INTEGER,
|
|
UNIQUE(participant_id, event_id)
|
|
);
|
|
|
|
-- Indexes for jackpot discoveries
|
|
CREATE INDEX idx_jackpot_discoveries_event ON jackpot_discoveries(event_id);
|
|
CREATE INDEX idx_jackpot_discoveries_participant ON jackpot_discoveries(participant_id);
|
|
|
|
COMMENT ON TABLE jackpot_discoveries IS 'Tracks participants who discovered the SQL injection Easter egg';
|