39 lines
1.6 KiB
SQL
39 lines
1.6 KiB
SQL
-- Migration: Domain Submission Feature
|
|
-- Adds status + postId to user_custom_domains
|
|
-- Adds domain_submissions and domain_votes tables
|
|
|
|
SET search_path TO rebreak;
|
|
|
|
-- 1. Add status + postId to existing custom domains
|
|
ALTER TABLE user_custom_domains
|
|
ADD COLUMN IF NOT EXISTS status TEXT NOT NULL DEFAULT 'active',
|
|
ADD COLUMN IF NOT EXISTS post_id UUID;
|
|
|
|
-- 2. Domain submissions table (admin + community review)
|
|
CREATE TABLE IF NOT EXISTS domain_submissions (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
user_id UUID NOT NULL,
|
|
domain TEXT NOT NULL,
|
|
custom_domain_id UUID NOT NULL UNIQUE REFERENCES user_custom_domains(id) ON DELETE CASCADE,
|
|
post_id UUID,
|
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
yes_votes INT NOT NULL DEFAULT 0,
|
|
no_votes INT NOT NULL DEFAULT 0,
|
|
review_note TEXT,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
reviewed_at TIMESTAMPTZ
|
|
);
|
|
|
|
-- 3. Domain votes table (one vote per user per submission)
|
|
CREATE TABLE IF NOT EXISTS domain_votes (
|
|
user_id UUID NOT NULL,
|
|
submission_id UUID NOT NULL REFERENCES domain_submissions(id) ON DELETE CASCADE,
|
|
vote TEXT NOT NULL, -- 'yes' | 'no'
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
PRIMARY KEY (user_id, submission_id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_domain_submissions_status ON domain_submissions(status);
|
|
CREATE INDEX IF NOT EXISTS idx_domain_submissions_user_id ON domain_submissions(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_domain_votes_submission ON domain_votes(submission_id);
|