-- =========================================
-- POLÍTICAS RLS PARA SECRETÁRIA CADASTRAR
-- =========================================
-- Execute este SQL no Supabase SQL Editor
-- URL: https://app.supabase.com/project/yuanqfswhberkoevtmfr/sql/new

-- =========================================
-- TABELA DOCTORS (Médicos)
-- =========================================

-- SELECT: Qualquer um autenticado pode ler
DROP POLICY IF EXISTS "doctors_select_authenticated" ON doctors;
CREATE POLICY "doctors_select_authenticated" 
ON doctors FOR SELECT 
TO authenticated 
USING (true);

-- INSERT: Qualquer usuário autenticado pode criar
DROP POLICY IF EXISTS "doctors_insert_authenticated" ON doctors;
CREATE POLICY "doctors_insert_authenticated" 
ON doctors FOR INSERT 
TO authenticated 
WITH CHECK (true);

-- UPDATE: Qualquer usuário autenticado pode atualizar
DROP POLICY IF EXISTS "doctors_update_authenticated" ON doctors;
CREATE POLICY "doctors_update_authenticated" 
ON doctors FOR UPDATE 
TO authenticated 
USING (true) 
WITH CHECK (true);

-- DELETE: Qualquer usuário autenticado pode deletar
DROP POLICY IF EXISTS "doctors_delete_authenticated" ON doctors;
CREATE POLICY "doctors_delete_authenticated" 
ON doctors FOR DELETE 
TO authenticated 
USING (true);

-- =========================================
-- TABELA PATIENTS (Pacientes)
-- =========================================

-- SELECT: Qualquer um autenticado pode ler
DROP POLICY IF EXISTS "patients_select_authenticated" ON patients;
CREATE POLICY "patients_select_authenticated" 
ON patients FOR SELECT 
TO authenticated 
USING (true);

-- INSERT: Qualquer usuário autenticado pode criar
DROP POLICY IF EXISTS "patients_insert_authenticated" ON patients;
CREATE POLICY "patients_insert_authenticated" 
ON patients FOR INSERT 
TO authenticated 
WITH CHECK (true);

-- UPDATE: Qualquer usuário autenticado pode atualizar
DROP POLICY IF EXISTS "patients_update_authenticated" ON patients;
CREATE POLICY "patients_update_authenticated" 
ON patients FOR UPDATE 
TO authenticated 
USING (true) 
WITH CHECK (true);

-- DELETE: Qualquer usuário autenticado pode deletar
DROP POLICY IF EXISTS "patients_delete_authenticated" ON patients;
CREATE POLICY "patients_delete_authenticated" 
ON patients FOR DELETE 
TO authenticated 
USING (true);

-- =========================================
-- TABELA PROFILES (Perfis - se existir)
-- =========================================

-- SELECT: Qualquer um autenticado pode ler
DROP POLICY IF EXISTS "profiles_select_authenticated" ON profiles;
CREATE POLICY "profiles_select_authenticated" 
ON profiles FOR SELECT 
TO authenticated 
USING (true);

-- INSERT: Pode criar próprio perfil
DROP POLICY IF EXISTS "profiles_insert_own" ON profiles;
CREATE POLICY "profiles_insert_own" 
ON profiles FOR INSERT 
TO authenticated 
WITH CHECK (auth.uid() = id);

-- UPDATE: Pode atualizar próprio perfil ou qualquer se for admin
DROP POLICY IF EXISTS "profiles_update_own_or_admin" ON profiles;
CREATE POLICY "profiles_update_own_or_admin" 
ON profiles FOR UPDATE 
TO authenticated 
USING (auth.uid() = id OR true) 
WITH CHECK (auth.uid() = id OR true);

-- =========================================
-- GARANTIR QUE RLS ESTÁ ATIVADO
-- =========================================

ALTER TABLE doctors ENABLE ROW LEVEL SECURITY;
ALTER TABLE patients ENABLE ROW LEVEL SECURITY;
ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;

-- =========================================
-- RESULTADO ESPERADO
-- =========================================
-- Após executar este script:
-- ✅ Secretária pode cadastrar médicos
-- ✅ Secretária pode cadastrar pacientes
-- ✅ Secretária pode editar médicos e pacientes
-- ✅ Secretária pode deletar médicos e pacientes
-- ✅ Admin pode fazer tudo
-- ✅ RLS continua protegendo acesso não autenticado
