36 lines
1.0 KiB
SQL
36 lines
1.0 KiB
SQL
-- Create customers table
|
|
CREATE TABLE IF NOT EXISTS customers (
|
|
id BIGINT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
|
|
full_name TEXT NOT NULL,
|
|
email TEXT,
|
|
phone TEXT,
|
|
address TEXT,
|
|
notes TEXT,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL,
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
|
|
);
|
|
|
|
-- Enable Row Level Security
|
|
ALTER TABLE customers ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- Policies
|
|
-- 1. Admin read access
|
|
CREATE POLICY "Admins can view customers"
|
|
ON customers FOR SELECT
|
|
USING (auth.role() = 'authenticated');
|
|
|
|
-- 2. Admin insert access
|
|
CREATE POLICY "Admins can insert customers"
|
|
ON customers FOR INSERT
|
|
WITH CHECK (auth.role() = 'authenticated');
|
|
|
|
-- 3. Admin update access
|
|
CREATE POLICY "Admins can update customers"
|
|
ON customers FOR UPDATE
|
|
USING (auth.role() = 'authenticated');
|
|
|
|
-- 4. Admin delete access
|
|
CREATE POLICY "Admins can delete customers"
|
|
ON customers FOR DELETE
|
|
USING (auth.role() = 'authenticated');
|