-- Newsletter subscribers table for SMTP-based email system CREATE TABLE IF NOT EXISTS public.newsletter_subscribers ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), email TEXT NOT NULL UNIQUE, topics TEXT[] DEFAULT ARRAY[]::TEXT[], status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'unsubscribed')), subscribed_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, unsubscribed_at TIMESTAMPTZ, created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX IF NOT EXISTS idx_newsletter_subscribers_email ON public.newsletter_subscribers(email); CREATE INDEX IF NOT EXISTS idx_newsletter_subscribers_status ON public.newsletter_subscribers(status); ALTER TABLE public.newsletter_subscribers ENABLE ROW LEVEL SECURITY; -- Only authenticated users (admins) can read/manage subscribers DROP POLICY IF EXISTS "admin_manage_newsletter_subscribers" ON public.newsletter_subscribers; CREATE POLICY "admin_manage_newsletter_subscribers" ON public.newsletter_subscribers FOR ALL TO authenticated USING (true) WITH CHECK (true); -- Allow public inserts (signup form) DROP POLICY IF EXISTS "public_subscribe_newsletter" ON public.newsletter_subscribers; CREATE POLICY "public_subscribe_newsletter" ON public.newsletter_subscribers FOR INSERT TO public WITH CHECK (true);