-- =========================================
-- POLÍTICAS RLS PARA MEDICONNECT
-- =========================================
-- Execute este SQL no SQL Editor do Supabase Dashboard:
-- https://app.supabase.com/project/yuanqfswhberkoevtmfr/sql/new

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

-- Remover políticas antigas se existirem
DROP POLICY IF EXISTS "doctors_select_all" ON doctors;
DROP POLICY IF EXISTS "doctors_insert_authenticated" ON doctors;
DROP POLICY IF EXISTS "doctors_update_authenticated" ON doctors;

-- SELECT: Todos podem ler médicos (necessário para listagens públicas)
CREATE POLICY "doctors_select_all" 
ON doctors FOR SELECT 
TO public 
USING (true);

-- INSERT: Apenas usuários autenticados podem criar médicos
CREATE POLICY "doctors_insert_authenticated" 
ON doctors FOR INSERT 
TO authenticated 
WITH CHECK (true);

-- UPDATE: Apenas usuários autenticados podem atualizar médicos
CREATE POLICY "doctors_update_authenticated" 
ON doctors FOR UPDATE 
TO authenticated 
USING (true) 
WITH CHECK (true);

-- DELETE: Apenas usuários autenticados podem deletar médicos
CREATE POLICY "doctors_delete_authenticated" 
ON doctors FOR DELETE 
TO authenticated 
USING (true);

-- =========================================
-- 2. TABELA PATIENTS (Pacientes)
-- =========================================

-- Remover políticas antigas se existirem
DROP POLICY IF EXISTS "patients_select_all" ON patients;
DROP POLICY IF EXISTS "patients_insert_authenticated" ON patients;
DROP POLICY IF EXISTS "patients_update_authenticated" ON patients;
DROP POLICY IF EXISTS "patients_update_own" ON patients;

-- SELECT: Todos podem ler pacientes (necessário para listagens)
CREATE POLICY "patients_select_all" 
ON patients FOR SELECT 
TO public 
USING (true);

-- INSERT: Usuários autenticados podem criar pacientes
CREATE POLICY "patients_insert_authenticated" 
ON patients FOR INSERT 
TO authenticated 
WITH CHECK (true);

-- UPDATE: Usuários autenticados podem atualizar qualquer paciente
-- (ideal para secretárias e médicos)
CREATE POLICY "patients_update_authenticated" 
ON patients FOR UPDATE 
TO authenticated 
USING (true) 
WITH CHECK (true);

-- DELETE: Apenas usuários autenticados podem deletar
CREATE POLICY "patients_delete_authenticated" 
ON patients FOR DELETE 
TO authenticated 
USING (true);

-- =========================================
-- 3. TABELA PROFILES (Se existir)
-- =========================================

-- SELECT: Todos podem ler profiles
DROP POLICY IF EXISTS "profiles_select_all" ON profiles;
CREATE POLICY "profiles_select_all" 
ON profiles FOR SELECT 
TO public 
USING (true);

-- INSERT: Apenas ao 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: Apenas próprio perfil
DROP POLICY IF EXISTS "profiles_update_own" ON profiles;
CREATE POLICY "profiles_update_own" 
ON profiles FOR UPDATE 
TO authenticated 
USING (auth.uid() = id) 
WITH CHECK (auth.uid() = id);

-- =========================================
-- VERIFICAR SE 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:
-- ✅ Qualquer um pode LER médicos e pacientes (necessário para UI pública)
-- ✅ Apenas usuários AUTENTICADOS podem CRIAR/EDITAR/DELETAR
-- ✅ A secretária poderá adicionar médicos e pacientes quando estiver logada
-- ✅ O painel mostrará os dados corretamente
