| 1 | CREATE TABLE watchlist ( |
| 2 | id BIGSERIAL PRIMARY KEY, |
| 3 | kind TEXT NOT NULL CHECK (kind IN ('artist','team','venue','sport','category','keyword','twitter_account')), |
| 4 | pattern TEXT NOT NULL, |
| 5 | label TEXT NOT NULL CHECK (length(label) BETWEEN 1 AND 128), |
| 6 | active BOOLEAN NOT NULL DEFAULT TRUE, |
| 7 | priority TEXT NOT NULL DEFAULT 'normal' CHECK (priority IN ('low','normal','high','critical')), |
| 8 | created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), |
| 9 | updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), |
| 10 | UNIQUE (kind, pattern) |
| 11 | ); |
| 12 | |
| 13 | CREATE INDEX idx_watchlist_active_kind ON watchlist(active, kind); |
| 14 | CREATE TRIGGER watchlist_set_updated_at |
| 15 | BEFORE UPDATE ON watchlist |
| 16 | FOR EACH ROW EXECUTE FUNCTION set_updated_at(); |