32 lines
1.4 KiB
SQL
32 lines
1.4 KiB
SQL
-- Migration 007: Track Request System
|
|
-- Allows users to request tracks for the stream with social attribution
|
|
|
|
-- Track requests table
|
|
CREATE TABLE IF NOT EXISTS track_requests (
|
|
_id SERIAL PRIMARY KEY,
|
|
"user-id" INTEGER NOT NULL REFERENCES "USERS"(_id) ON DELETE CASCADE,
|
|
track_title TEXT NOT NULL, -- Track title (Artist - Title format)
|
|
track_path TEXT, -- Optional: path to file if known
|
|
message TEXT, -- Optional message from requester
|
|
status TEXT DEFAULT 'pending', -- pending, approved, rejected, played
|
|
"created-at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
"reviewed-at" TIMESTAMP, -- When admin reviewed
|
|
"reviewed-by" INTEGER REFERENCES "USERS"(_id),
|
|
"played-at" TIMESTAMP -- When it was actually played
|
|
);
|
|
|
|
-- Create indexes for efficient queries
|
|
CREATE INDEX IF NOT EXISTS idx_track_requests_user_id ON track_requests("user-id");
|
|
CREATE INDEX IF NOT EXISTS idx_track_requests_status ON track_requests(status);
|
|
CREATE INDEX IF NOT EXISTS idx_track_requests_created ON track_requests("created-at");
|
|
|
|
-- Grant permissions
|
|
GRANT ALL PRIVILEGES ON track_requests TO asteroid;
|
|
GRANT ALL PRIVILEGES ON SEQUENCE track_requests__id_seq TO asteroid;
|
|
|
|
-- Verification
|
|
DO $$
|
|
BEGIN
|
|
RAISE NOTICE 'Migration 007: Track requests table created successfully!';
|
|
END $$;
|