All checks were successful
Build & Deploy Frontend / build-push-deploy (push) Successful in 1m45s
136 lines
4.3 KiB
SQL
136 lines
4.3 KiB
SQL
-- Create company profile table
|
|
CREATE TABLE public.company_profile (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
company_name TEXT NOT NULL,
|
|
company_logo_url TEXT,
|
|
address_line1 TEXT,
|
|
address_line2 TEXT,
|
|
city TEXT,
|
|
state TEXT,
|
|
postal_code TEXT,
|
|
country TEXT,
|
|
phone TEXT,
|
|
email TEXT,
|
|
website TEXT,
|
|
tax_id TEXT,
|
|
registration_number TEXT,
|
|
industry TEXT,
|
|
employee_count INTEGER,
|
|
founded_year INTEGER,
|
|
description TEXT,
|
|
timezone TEXT DEFAULT 'UTC',
|
|
currency TEXT DEFAULT 'USD',
|
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Create email settings table for SMTP/IMAP
|
|
CREATE TABLE public.email_settings (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
smtp_host TEXT NOT NULL,
|
|
smtp_port INTEGER NOT NULL DEFAULT 587,
|
|
smtp_username TEXT NOT NULL,
|
|
smtp_password TEXT NOT NULL,
|
|
smtp_encryption TEXT NOT NULL DEFAULT 'tls', -- 'tls', 'ssl', 'none'
|
|
smtp_from_email TEXT NOT NULL,
|
|
smtp_from_name TEXT NOT NULL,
|
|
imap_host TEXT,
|
|
imap_port INTEGER DEFAULT 993,
|
|
imap_username TEXT,
|
|
imap_password TEXT,
|
|
imap_encryption TEXT DEFAULT 'ssl',
|
|
is_enabled BOOLEAN NOT NULL DEFAULT false,
|
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Create SMS gateway settings table
|
|
CREATE TABLE public.sms_settings (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
provider TEXT NOT NULL, -- 'twilio', 'nexmo', 'textlocal', 'custom'
|
|
api_key TEXT NOT NULL,
|
|
api_secret TEXT,
|
|
sender_id TEXT,
|
|
base_url TEXT, -- for custom providers
|
|
webhook_url TEXT,
|
|
is_enabled BOOLEAN NOT NULL DEFAULT false,
|
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Create WhatsApp Business API settings table
|
|
CREATE TABLE public.whatsapp_settings (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
provider TEXT NOT NULL DEFAULT 'meta', -- 'meta', 'twilio', 'custom'
|
|
phone_number_id TEXT NOT NULL,
|
|
access_token TEXT NOT NULL,
|
|
business_account_id TEXT,
|
|
webhook_verify_token TEXT,
|
|
webhook_url TEXT,
|
|
is_enabled BOOLEAN NOT NULL DEFAULT false,
|
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Create notification preferences table
|
|
CREATE TABLE public.notification_settings (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
email_notifications BOOLEAN NOT NULL DEFAULT true,
|
|
sms_notifications BOOLEAN NOT NULL DEFAULT false,
|
|
whatsapp_notifications BOOLEAN NOT NULL DEFAULT false,
|
|
push_notifications BOOLEAN NOT NULL DEFAULT true,
|
|
notification_types JSONB DEFAULT '{"reminders": true, "payments": true, "system": true, "security": true}',
|
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Enable RLS on all tables
|
|
ALTER TABLE public.company_profile ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE public.email_settings ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE public.sms_settings ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE public.whatsapp_settings ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE public.notification_settings ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- Create policies (admin only access)
|
|
CREATE POLICY "Admins can manage company profile" ON public.company_profile
|
|
FOR ALL
|
|
USING (has_role(auth.uid(), 'admin'::app_role));
|
|
|
|
CREATE POLICY "Anyone can read company profile" ON public.company_profile
|
|
FOR SELECT
|
|
USING (true);
|
|
|
|
CREATE POLICY "Admins can manage email settings" ON public.email_settings
|
|
FOR ALL
|
|
USING (has_role(auth.uid(), 'admin'::app_role));
|
|
|
|
CREATE POLICY "Admins can manage SMS settings" ON public.sms_settings
|
|
FOR ALL
|
|
USING (has_role(auth.uid(), 'admin'::app_role));
|
|
|
|
CREATE POLICY "Admins can manage WhatsApp settings" ON public.whatsapp_settings
|
|
FOR ALL
|
|
USING (has_role(auth.uid(), 'admin'::app_role));
|
|
|
|
CREATE POLICY "Admins can manage notification settings" ON public.notification_settings
|
|
FOR ALL
|
|
USING (has_role(auth.uid(), 'admin'::app_role));
|
|
|
|
CREATE POLICY "Anyone can read notification settings" ON public.notification_settings
|
|
FOR SELECT
|
|
USING (true);
|
|
|
|
-- Insert default records
|
|
INSERT INTO public.company_profile (
|
|
company_name,
|
|
email,
|
|
timezone,
|
|
currency
|
|
) VALUES (
|
|
'Your Company Name',
|
|
'admin@company.com',
|
|
'UTC',
|
|
'USD'
|
|
);
|
|
|
|
INSERT INTO public.notification_settings DEFAULT VALUES; |