initial commit: rocket.new export of broadcastbeat
This commit is contained in:
81
supabase/migrations/20260322220000_company_coverage.sql
Normal file
81
supabase/migrations/20260322220000_company_coverage.sql
Normal file
@@ -0,0 +1,81 @@
|
||||
-- ============================================================
|
||||
-- Migration: company_coverage
|
||||
-- Timestamp: 20260322220000
|
||||
-- ============================================================
|
||||
|
||||
-- 1. company_coverage_queue table
|
||||
CREATE TABLE IF NOT EXISTS public.company_coverage_queue (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
company_name TEXT NOT NULL,
|
||||
source_article_id TEXT,
|
||||
source_article_title TEXT,
|
||||
source_article_slug TEXT,
|
||||
source_type TEXT DEFAULT 'native', -- 'native' or 'imported'
|
||||
ai_draft_title TEXT,
|
||||
ai_draft_content TEXT,
|
||||
ai_draft_excerpt TEXT,
|
||||
status TEXT NOT NULL DEFAULT 'queued', -- 'queued', 'approved', 'published', 'dismissed'
|
||||
reminder_sent BOOLEAN DEFAULT FALSE,
|
||||
reminder_sent_at TIMESTAMPTZ,
|
||||
reviewed_by UUID REFERENCES public.user_profiles(id) ON DELETE SET NULL,
|
||||
reviewed_at TIMESTAMPTZ,
|
||||
published_article_id UUID,
|
||||
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_company_coverage_status ON public.company_coverage_queue(status);
|
||||
CREATE INDEX IF NOT EXISTS idx_company_coverage_company ON public.company_coverage_queue(company_name);
|
||||
CREATE INDEX IF NOT EXISTS idx_company_coverage_created ON public.company_coverage_queue(created_at DESC);
|
||||
|
||||
-- 2. autopilot_settings table (single-row config)
|
||||
CREATE TABLE IF NOT EXISTS public.autopilot_settings (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
autopilot_enabled BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
reminder_email TEXT NOT NULL DEFAULT 'ryan.salazar@relevantmediaproperties.com',
|
||||
scan_interval_hours INTEGER NOT NULL DEFAULT 24,
|
||||
last_scan_at TIMESTAMPTZ,
|
||||
last_scan_articles_processed INTEGER DEFAULT 0,
|
||||
last_scan_companies_found INTEGER DEFAULT 0,
|
||||
updated_by UUID REFERENCES public.user_profiles(id) ON DELETE SET NULL,
|
||||
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Insert default settings row
|
||||
INSERT INTO public.autopilot_settings (autopilot_enabled, reminder_email)
|
||||
VALUES (FALSE, 'ryan.salazar@relevantmediaproperties.com')
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- 3. Enable RLS
|
||||
ALTER TABLE public.company_coverage_queue ENABLE ROW LEVEL SECURITY;
|
||||
ALTER TABLE public.autopilot_settings ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
-- 4. RLS Policies for company_coverage_queue
|
||||
DROP POLICY IF EXISTS "admin_manage_company_coverage" ON public.company_coverage_queue;
|
||||
CREATE POLICY "admin_manage_company_coverage"
|
||||
ON public.company_coverage_queue
|
||||
FOR ALL
|
||||
TO authenticated
|
||||
USING (true)
|
||||
WITH CHECK (true);
|
||||
|
||||
-- 5. RLS Policies for autopilot_settings
|
||||
DROP POLICY IF EXISTS "admin_manage_autopilot_settings" ON public.autopilot_settings;
|
||||
CREATE POLICY "admin_manage_autopilot_settings"
|
||||
ON public.autopilot_settings
|
||||
FOR ALL
|
||||
TO authenticated
|
||||
USING (true)
|
||||
WITH CHECK (true);
|
||||
|
||||
-- 6. Trigger for updated_at on company_coverage_queue
|
||||
DROP TRIGGER IF EXISTS update_company_coverage_updated_at ON public.company_coverage_queue;
|
||||
CREATE TRIGGER update_company_coverage_updated_at
|
||||
BEFORE UPDATE ON public.company_coverage_queue
|
||||
FOR EACH ROW EXECUTE FUNCTION public.update_updated_at();
|
||||
|
||||
-- 7. Trigger for updated_at on autopilot_settings
|
||||
DROP TRIGGER IF EXISTS update_autopilot_settings_updated_at ON public.autopilot_settings;
|
||||
CREATE TRIGGER update_autopilot_settings_updated_at
|
||||
BEFORE UPDATE ON public.autopilot_settings
|
||||
FOR EACH ROW EXECUTE FUNCTION public.update_updated_at();
|
||||
Reference in New Issue
Block a user