erp-cicd/frontend/supabase/migrations/20250810102215_70f64351-8ec2-4ba2-9dc2-034c4e4f026e.sql
Ali af6fd7bcad
All checks were successful
Build & Deploy Frontend / build-push-deploy (push) Successful in 1m45s
added some
2025-08-30 11:57:49 +05:30

97 lines
3.1 KiB
SQL

-- Create emails table to store actual email messages
CREATE TABLE public.emails (
id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
account_id UUID NOT NULL REFERENCES public.email_accounts(id) ON DELETE CASCADE,
user_id UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
folder_id TEXT NOT NULL,
message_id TEXT NOT NULL,
thread_id TEXT,
subject TEXT NOT NULL DEFAULT '',
sender_name TEXT,
sender_email TEXT NOT NULL,
recipient_emails TEXT[] DEFAULT '{}',
cc_emails TEXT[] DEFAULT '{}',
bcc_emails TEXT[] DEFAULT '{}',
body_text TEXT,
body_html TEXT,
received_date TIMESTAMP WITH TIME ZONE NOT NULL,
is_read BOOLEAN NOT NULL DEFAULT false,
is_starred BOOLEAN NOT NULL DEFAULT false,
is_important BOOLEAN NOT NULL DEFAULT false,
has_attachments BOOLEAN NOT NULL DEFAULT false,
labels TEXT[] DEFAULT '{}',
size_bytes INTEGER DEFAULT 0,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
UNIQUE(account_id, message_id)
);
-- Create email attachments table
CREATE TABLE public.email_attachments (
id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
email_id UUID NOT NULL REFERENCES public.emails(id) ON DELETE CASCADE,
filename TEXT NOT NULL,
content_type TEXT,
size_bytes INTEGER DEFAULT 0,
attachment_data BYTEA,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()
);
-- Enable RLS on emails table
ALTER TABLE public.emails ENABLE ROW LEVEL SECURITY;
-- Create RLS policies for emails
CREATE POLICY "Users can view their own emails"
ON public.emails
FOR SELECT
USING (auth.uid() = user_id);
CREATE POLICY "Users can update their own emails"
ON public.emails
FOR UPDATE
USING (auth.uid() = user_id);
CREATE POLICY "Users can insert their own emails"
ON public.emails
FOR INSERT
WITH CHECK (auth.uid() = user_id);
CREATE POLICY "Users can delete their own emails"
ON public.emails
FOR DELETE
USING (auth.uid() = user_id);
-- Enable RLS on email attachments
ALTER TABLE public.email_attachments ENABLE ROW LEVEL SECURITY;
-- Create RLS policies for email attachments
CREATE POLICY "Users can view their own email attachments"
ON public.email_attachments
FOR SELECT
USING (EXISTS (
SELECT 1 FROM public.emails
WHERE emails.id = email_attachments.email_id
AND emails.user_id = auth.uid()
));
CREATE POLICY "Users can manage their own email attachments"
ON public.email_attachments
FOR ALL
USING (EXISTS (
SELECT 1 FROM public.emails
WHERE emails.id = email_attachments.email_id
AND emails.user_id = auth.uid()
));
-- Add indexes for better performance
CREATE INDEX idx_emails_account_folder ON public.emails(account_id, folder_id);
CREATE INDEX idx_emails_user_received_date ON public.emails(user_id, received_date DESC);
CREATE INDEX idx_emails_is_read ON public.emails(user_id, is_read);
CREATE INDEX idx_emails_is_starred ON public.emails(user_id, is_starred);
CREATE INDEX idx_emails_message_id ON public.emails(account_id, message_id);
-- Create trigger for updating timestamps
CREATE TRIGGER update_emails_updated_at
BEFORE UPDATE ON public.emails
FOR EACH ROW
EXECUTE FUNCTION public.update_updated_at_column();