108 lines
3.4 KiB
Markdown
108 lines
3.4 KiB
Markdown
# 🔧 Aplicar Migration: Confirmation Status
|
|
|
|
## ⚠️ IMPORTANTE - LEIA PRIMEIRO
|
|
|
|
**A tabela `appointments` não existe no seu banco de dados!**
|
|
|
|
Você tem duas opções:
|
|
|
|
### ✅ **Opção A: Usar o Supabase REST API (Sistema já funciona)**
|
|
O sistema está usando a **API REST do Supabase** que funciona sem migrations locais. Neste caso, você **NÃO precisa aplicar esta migration**. As notificações vão funcionar assim que você:
|
|
|
|
1. Criar consultas pelo sistema
|
|
2. As consultas terão os campos necessários automaticamente
|
|
|
|
### ✅ **Opção B: Aplicar Migration no Supabase Dashboard**
|
|
Se você quer adicionar os campos de confirmação no banco existente:
|
|
|
|
## 🚀 Como Aplicar (Via Supabase Dashboard)
|
|
|
|
1. **Acesse:** https://supabase.com/dashboard
|
|
2. **Selecione** seu projeto
|
|
3. **Vá em:** SQL Editor (menu lateral)
|
|
4. **Clique em:** "New Query"
|
|
5. **Abra o arquivo:** `supabase\migrations\20251203000000_add_confirmation_status.sql`
|
|
6. **Copie TODO o conteúdo** do arquivo
|
|
7. **Cole** no SQL Editor
|
|
8. **Clique em:** RUN (botão verde)
|
|
|
|
## 📋 O que esta migration faz?
|
|
|
|
- ✅ Verifica se a tabela `appointments` existe
|
|
- ✅ Adiciona coluna `confirmation_status` (pending/confirmed/declined)
|
|
- ✅ Adiciona coluna `confirmed_at` (timestamp da confirmação)
|
|
- ✅ Cria índices para melhor performance
|
|
- ✅ Atualiza consultas existentes automaticamente
|
|
- ✅ Mostra mensagens de progresso
|
|
|
|
## ✅ Como saber se funcionou?
|
|
|
|
Após executar, você verá mensagens como:
|
|
|
|
```
|
|
NOTICE: ✓ Coluna confirmation_status adicionada
|
|
NOTICE: ✓ Coluna confirmed_at adicionada
|
|
NOTICE: ✓ Índices criados
|
|
NOTICE: ✓ Consultas existentes atualizadas
|
|
NOTICE: ✓✓ Migration concluída com sucesso!
|
|
```
|
|
|
|
E verá uma tabela mostrando as colunas criadas.
|
|
|
|
## 📊 Testar
|
|
|
|
Após aplicar a migration:
|
|
|
|
1. Acesse a aba **Notificações** no dashboard do paciente
|
|
2. As consultas com status `requested` ou `confirmed` devem aparecer
|
|
3. Clique em **Confirmar Presença** em uma consulta
|
|
4. Verifique se o status mudou para `confirmed` e a notificação sumiu
|
|
|
|
## 🔍 Consultas Úteis
|
|
|
|
### Ver todas as consultas com confirmação pendente:
|
|
```sql
|
|
SELECT id, patient_id, doctor_id, scheduled_at, status, confirmation_status
|
|
FROM appointments
|
|
WHERE confirmation_status = 'pending'
|
|
ORDER BY scheduled_at;
|
|
```
|
|
|
|
### Ver confirmações de um paciente específico:
|
|
```sql
|
|
SELECT * FROM appointments
|
|
WHERE patient_id = 'SEU_PATIENT_ID'
|
|
AND confirmation_status IS NOT NULL
|
|
ORDER BY scheduled_at DESC;
|
|
```
|
|
|
|
## ⚠️ Troubleshooting
|
|
|
|
### Erro: "relation does not exist"
|
|
- Certifique-se de que está conectado ao banco correto
|
|
- Verifique se a tabela `appointments` existe
|
|
|
|
### Erro: "column already exists"
|
|
- A migration já foi aplicada anteriormente
|
|
- Você pode ignorar este erro
|
|
|
|
### As notificações não aparecem?
|
|
1. Verifique se há consultas com status `requested` ou `confirmed`
|
|
2. Confirme que `confirmation_status` = `'pending'` ou `NULL`
|
|
3. Verifique se o `patient_id` corresponde ao usuário logado
|
|
4. Limpe o cache do navegador (Ctrl + Shift + R)
|
|
|
|
## 📝 Rollback (se necessário)
|
|
|
|
Se precisar reverter a migration:
|
|
|
|
```sql
|
|
-- Remover índices
|
|
DROP INDEX IF EXISTS idx_appointments_confirmation_status;
|
|
DROP INDEX IF EXISTS idx_appointments_patient_confirmation;
|
|
|
|
-- Remover colunas
|
|
ALTER TABLE appointments DROP COLUMN IF EXISTS confirmation_status;
|
|
ALTER TABLE appointments DROP COLUMN IF EXISTS confirmed_at;
|
|
```
|