initial commit: rocket.new export of broadcastbeat
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
-- 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);
|
||||
Reference in New Issue
Block a user