52 lines
1.7 KiB
SQL
52 lines
1.7 KiB
SQL
-- Migration: companies and partners tables with relationships
|
|
|
|
-- 1. Create companies table
|
|
CREATE TABLE IF NOT EXISTS public.companies (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
name TEXT NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- 2. Create partners table with optional company reference
|
|
CREATE TABLE IF NOT EXISTS public.partners (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
name TEXT NOT NULL,
|
|
company_id UUID REFERENCES public.companies(id) ON DELETE SET NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Enable RLS on both tables
|
|
ALTER TABLE public.companies ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE public.partners ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- Policies for companies
|
|
DROP POLICY IF EXISTS "Admins und Unternehmen lesen" ON public.companies;
|
|
CREATE POLICY "Admins und Unternehmen lesen"
|
|
ON public.companies FOR SELECT
|
|
USING (auth.role() = 'authenticated');
|
|
|
|
DROP POLICY IF EXISTS "Service role kann alles Unternehmen" ON public.companies;
|
|
CREATE POLICY "Service role kann alles Unternehmen"
|
|
ON public.companies FOR ALL
|
|
USING (true)
|
|
WITH CHECK (true);
|
|
|
|
-- Policies for partners
|
|
DROP POLICY IF EXISTS "Admins und Partner lesen" ON public.partners;
|
|
CREATE POLICY "Admins und Partner lesen"
|
|
ON public.partners FOR SELECT
|
|
USING (auth.role() = 'authenticated');
|
|
|
|
DROP POLICY IF EXISTS "Service role kann alles Partner" ON public.partners;
|
|
CREATE POLICY "Service role kann alles Partner"
|
|
ON public.partners FOR ALL
|
|
USING (true)
|
|
WITH CHECK (true);
|
|
|
|
-- 3. Add company_id to users (instead of partner_id)
|
|
ALTER TABLE public.users
|
|
ADD COLUMN IF NOT EXISTS company_id UUID REFERENCES public.companies(id) ON DELETE SET NULL;
|
|
|
|
-- Reload schema cache
|
|
NOTIFY pgrst, 'reload schema';
|