# 📋 Guia de Atualização do Banco de Dados na VPS

Este guia explica como atualizar o banco de dados na VPS com todas as tabelas e dados demo para testar.

## 🎯 Objetivo

Atualizar o banco de dados na VPS com:
- ✅ Todas as tabelas do sistema (schema completo)
- ✅ Dados demo para facilitar testes
- ✅ Estrutura atualizada com todas as funcionalidades desenvolvidas

## 📦 O que foi atualizado

### Schema Principal (`services/pointsSchema.js`)
- ✅ Adicionada criação da tabela `purchases` (compras de clientes)
- ✅ Todas as tabelas do sistema incluídas:
  - `users`, `roles`, `users_profile`, `wallets`
  - `transactions`, `transfers`, `points_history`
  - `rewards`, `reward_redemptions`
  - `merchants`, `merchant_users`, `campaigns`
  - `qr_codes`, `user_contacts`
  - `friend_requests`, `maktubia_friends`
  - `audit_logs`, `system_activities`
  - `points_ledger`, `points_assignments`
  - `points_redemptions`, `points_purchases`, `points_sales`
  - `points_expiration_rules`, `points_expiration_log`
  - **`purchases`** (nova)

## 🚀 Como usar

### Opção 1: Script Bash (Recomendado)

Execute na VPS:

```bash
cd /var/www/maktubia-backend
bash deploy/atualizar-banco-vps-completo.sh
```

### Opção 2: Script Node.js

Execute na VPS:

```bash
cd /var/www/maktubia-backend
node deploy/atualizar-banco-vps-completo.js
```

### Opção 3: Manual (Passo a passo)

1. **Aplicar schema completo:**
   ```bash
   cd /var/www/maktubia-backend
   node -e "require('./services/pointsSchema').applyPointsSchema().then(() => process.exit(0))"
   ```

2. **Criar dados demo:**
   ```bash
   node -e "require('./create-sample-data-complete').createSampleData().then(() => process.exit(0))"
   ```

3. **Reiniciar aplicação:**
   ```bash
   pm2 restart maktubia-backend
   ```

## 📊 O que o script faz

1. **Aplica schema completo:**
   - Cria todas as tabelas necessárias
   - Adiciona índices importantes
   - Cria funções e views necessárias
   - Atualiza colunas existentes se necessário

2. **Cria dados demo:**
   - Usuários de exemplo (clientes)
   - Merchants/Estabelecimentos
   - Campanhas de exemplo
   - Compras de exemplo
   - Pontos e transações

3. **Valida estrutura:**
   - Verifica tabelas criadas
   - Conta registros nas tabelas principais
   - Mostra resumo da atualização

## ✅ Verificação

Após executar o script, você pode verificar:

```bash
# Conectar ao banco
sudo -u postgres psql -d maktubia_points

# Listar tabelas
\dt

# Contar registros
SELECT 
    'users' as tabela, COUNT(*) as total FROM users
UNION ALL
SELECT 'merchants', COUNT(*) FROM merchants
UNION ALL
SELECT 'campaigns', COUNT(*) FROM campaigns
UNION ALL
SELECT 'purchases', COUNT(*) FROM purchases;
```

## 🔧 Troubleshooting

### Erro: "Tabela já existe"
- ✅ Normal, o script usa `CREATE TABLE IF NOT EXISTS`
- O script atualiza colunas existentes se necessário

### Erro: "Dados demo já existem"
- ✅ Normal, o script verifica antes de criar
- Para recriar, limpe os dados primeiro (cuidado!)

### Erro de conexão PostgreSQL
- Verifique se PostgreSQL está rodando: `systemctl status postgresql`
- Verifique credenciais no arquivo `.env`
- Teste conexão: `psql -h localhost -U postgres -d maktubia_points`

## 📝 Notas

- O script é **idempotente** (pode ser executado múltiplas vezes)
- Não remove dados existentes
- Adiciona apenas o que falta
- Dados demo são criados apenas se não existirem

## 🎉 Próximos passos

Após atualizar o banco:
1. Teste as funcionalidades no frontend
2. Verifique se todas as tabelas estão criadas
3. Teste login e criação de usuários
4. Teste campanhas e compras
5. Verifique pontos e transferências

---

**Última atualização:** $(date)
**Versão:** 1.0.0

