feat: implement logic engine for module dependencies and exclusions
This commit is contained in:
50
shop/supabase/migrations/20240501000000_initial_schema.sql
Normal file
50
shop/supabase/migrations/20240501000000_initial_schema.sql
Normal file
@@ -0,0 +1,50 @@
|
||||
-- Enable UUID extension
|
||||
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
||||
|
||||
-- Products Table
|
||||
CREATE TABLE IF NOT EXISTS public.products (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
name TEXT NOT NULL,
|
||||
description TEXT,
|
||||
base_price DECIMAL(10, 2) NOT NULL DEFAULT 0.00,
|
||||
tax_rate DECIMAL(5, 2) NOT NULL DEFAULT 19.00,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
|
||||
);
|
||||
|
||||
-- Product Modules Table
|
||||
CREATE TABLE IF NOT EXISTS public.product_modules (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
product_id UUID REFERENCES public.products(id) ON DELETE CASCADE,
|
||||
name TEXT NOT NULL,
|
||||
description TEXT,
|
||||
price DECIMAL(10, 2) NOT NULL DEFAULT 0.00,
|
||||
requirements UUID[] DEFAULT '{}',
|
||||
exclusions UUID[] DEFAULT '{}',
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
|
||||
);
|
||||
|
||||
-- Orders Table
|
||||
CREATE TABLE IF NOT EXISTS public.orders (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
user_id UUID REFERENCES auth.users(id),
|
||||
customer_data JSONB NOT NULL,
|
||||
order_data JSONB NOT NULL,
|
||||
total_price DECIMAL(10, 2) NOT NULL,
|
||||
pdf_url TEXT,
|
||||
status TEXT NOT NULL DEFAULT 'pending',
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
|
||||
);
|
||||
|
||||
-- Enable Row Level Security
|
||||
ALTER TABLE public.products ENABLE ROW LEVEL SECURITY;
|
||||
ALTER TABLE public.product_modules ENABLE ROW LEVEL SECURITY;
|
||||
ALTER TABLE public.orders ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
-- Policies
|
||||
-- Products: Read for everyone, Write for authenticated admins (simplified for now)
|
||||
CREATE POLICY "Allow public read access on products" ON public.products FOR SELECT USING (true);
|
||||
CREATE POLICY "Allow public read access on product_modules" ON public.product_modules FOR SELECT USING (true);
|
||||
|
||||
-- Orders: Users can only see their own orders
|
||||
CREATE POLICY "Users can view their own orders" ON public.orders FOR SELECT USING (auth.uid() = user_id);
|
||||
CREATE POLICY "Users can create their own orders" ON public.orders FOR INSERT WITH CHECK (auth.uid() = user_id);
|
||||
Reference in New Issue
Block a user