Some checks are pending
CI Pipeline / changes (push) Waiting to run
CI Pipeline / core (push) Blocked by required conditions
CI Pipeline / trading-backend (push) Blocked by required conditions
CI Pipeline / trading-data-service (push) Blocked by required conditions
CI Pipeline / trading-frontend (push) Blocked by required conditions
CI Pipeline / erp-core (push) Blocked by required conditions
CI Pipeline / erp-mecanicas (push) Blocked by required conditions
CI Pipeline / gamilit-backend (push) Blocked by required conditions
CI Pipeline / gamilit-frontend (push) Blocked by required conditions
Backend: - Fix email verification and password recovery services - Fix exercise submission and student progress services Frontend: - Update missions, password, and profile API services - Fix ExerciseContentRenderer component Docs & Scripts: - Add SSL/Certbot deployment guide - Add quick deployment guide - Database scripts for testing and validations - Migration and homologation reports - Functions inventory documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
397 lines
12 KiB
Markdown
397 lines
12 KiB
Markdown
# 📚 ÍNDICE MAESTRO - Scripts de Base de Datos GAMILIT
|
|
|
|
**Actualizado:** 2025-11-08
|
|
**Versión:** 3.0
|
|
**Estado:** ✅ Consolidado y Funcional
|
|
|
|
---
|
|
|
|
## 🎯 INICIO RÁPIDO
|
|
|
|
¿Nuevo en el proyecto? Empieza aquí:
|
|
|
|
```bash
|
|
# 1. Lee la guía rápida
|
|
cat QUICK-START.md
|
|
|
|
# 2. Inicializa la BD
|
|
./init-database.sh --env dev --force
|
|
|
|
# 3. ¡Listo!
|
|
```
|
|
|
|
---
|
|
|
|
## 📖 DOCUMENTACIÓN DISPONIBLE
|
|
|
|
### Documentos Principales
|
|
|
|
| Archivo | Propósito | ¿Cuándo leer? |
|
|
|---------|-----------|---------------|
|
|
| **QUICK-START.md** | Guía rápida de uso | ⭐ Primero - Setup inicial |
|
|
| **README.md** | Documentación completa | Segunda lectura - Detalles |
|
|
| **ANALISIS-SCRIPTS-2025-11-08.md** | Análisis técnico | Referencia técnica |
|
|
| **INDEX.md** | Este índice | Navegación general |
|
|
| **README-SETUP.md** | Guía de setup detallada | Setup avanzado |
|
|
|
|
### Orden Recomendado de Lectura
|
|
|
|
```
|
|
1. INDEX.md (este archivo) ← Estás aquí
|
|
2. QUICK-START.md ← Guía rápida para empezar
|
|
3. README.md ← Documentación completa
|
|
4. ANALISIS-SCRIPTS-2025-11-08.md ← Detalles técnicos (opcional)
|
|
```
|
|
|
|
---
|
|
|
|
## 🛠️ SCRIPTS DISPONIBLES
|
|
|
|
### Scripts Principales (3) ⭐
|
|
|
|
| Script | Tamaño | Estado | Propósito |
|
|
|--------|--------|--------|-----------|
|
|
| `init-database.sh` | 36K | ✅ Activo | Inicialización completa (v3.0) |
|
|
| `reset-database.sh` | 16K | ✅ Activo | Reset rápido (mantiene usuario) |
|
|
| `recreate-database.sh` | 8.9K | ✅ Activo | Recreación completa (elimina todo) |
|
|
|
|
### Scripts de Gestión (3)
|
|
|
|
| Script | Tamaño | Estado | Propósito |
|
|
|--------|--------|--------|-----------|
|
|
| `manage-secrets.sh` | 18K | ✅ Activo | Gestión de secrets con dotenv-vault |
|
|
| `update-env-files.sh` | 16K | ✅ Activo | Sincronización de .env |
|
|
| `cleanup-duplicados.sh` | 12K | ✅ Activo | Limpieza de duplicados |
|
|
|
|
### Scripts de Inventario (8)
|
|
|
|
Ubicación: `inventory/`
|
|
|
|
| Script | Propósito |
|
|
|--------|-----------|
|
|
| `list-tables.sh` | Listar todas las tablas |
|
|
| `list-functions.sh` | Listar todas las funciones |
|
|
| `list-enums.sh` | Listar todos los ENUMs |
|
|
| `list-rls.sh` | Listar RLS policies |
|
|
| `list-indexes.sh` | Listar índices |
|
|
| `list-views.sh` | Listar vistas |
|
|
| `list-triggers.sh` | Listar triggers |
|
|
| `list-seeds.sh` | Listar seeds disponibles |
|
|
| `generate-all-inventories.sh` | Generar todos los inventarios |
|
|
|
|
### Scripts Obsoletos (deprecated/)
|
|
|
|
| Script | Estado | Notas |
|
|
|--------|--------|-------|
|
|
| `init-database-v1.sh` | 📦 Deprecated | Versión original (21K) |
|
|
| `init-database-v2.sh` | 📦 Deprecated | Versión intermedia (32K) |
|
|
| `init-database.sh.backup-*` | 📦 Deprecated | Backup de v1.0 |
|
|
|
|
⚠️ **NO eliminar archivos en deprecated/** - Son históricos y de referencia
|
|
|
|
---
|
|
|
|
## 📊 COMPARACIÓN RÁPIDA DE SCRIPTS PRINCIPALES
|
|
|
|
| Característica | init-database.sh | reset-database.sh | recreate-database.sh |
|
|
|----------------|------------------|-------------------|----------------------|
|
|
| **Elimina usuario** | ❌ | ❌ | ✅ |
|
|
| **Elimina BD** | ⚠️ Si existe | ✅ | ✅ |
|
|
| **Crea usuario** | ✅ Si no existe | ❌ | ✅ |
|
|
| **Genera password** | ✅ | ❌ | ✅ |
|
|
| **Requiere password** | ❌ | ✅ | ❌ |
|
|
| **Actualiza .env** | ✅ | ❌ | ✅ |
|
|
| **Soporta dotenv-vault** | ✅ | ❌ | ✅ (vía init) |
|
|
| **Tiempo ejecución** | 30-60s | 20-30s | 40-70s |
|
|
| **Riesgo de pérdida datos** | Bajo | Medio | Alto |
|
|
|
|
---
|
|
|
|
## 🎯 GUÍA DE DECISIÓN RÁPIDA
|
|
|
|
### ¿Qué script debo usar?
|
|
|
|
```
|
|
┌─────────────────────────────────────┐
|
|
│ ¿Es la primera vez en el proyecto? │
|
|
└──────────┬──────────────────────────┘
|
|
│
|
|
├─ SÍ ──> init-database.sh --env dev --force
|
|
│
|
|
└─ NO ──┐
|
|
│
|
|
┌──────────┴────────────────────────┐
|
|
│ ¿Conoces el password del usuario? │
|
|
└──────────┬────────────────────────┘
|
|
│
|
|
├─ SÍ ──> reset-database.sh --env dev --password "pass"
|
|
│
|
|
└─ NO ──> recreate-database.sh --env dev
|
|
```
|
|
|
|
### Casos de Uso Específicos
|
|
|
|
| Situación | Script Recomendado | Comando |
|
|
|-----------|-------------------|---------|
|
|
| **Primera vez** | init-database.sh | `./init-database.sh --env dev --force` |
|
|
| **Aplicar cambios DDL** | reset-database.sh | `./reset-database.sh --env dev --password "pass"` |
|
|
| **Olvidé password** | recreate-database.sh | `./recreate-database.sh --env dev` |
|
|
| **Deployment producción** | init-database.sh + vault | `./manage-secrets.sh generate --env prod && ./init-database.sh --env prod` |
|
|
| **Desarrollo diario** | reset-database.sh | `./reset-database.sh --env dev --password "$(grep Password ../database-credentials-dev.txt | cut -d: -f2 | xargs)"` |
|
|
|
|
---
|
|
|
|
## 📁 ESTRUCTURA DEL DIRECTORIO
|
|
|
|
```
|
|
/apps/database/scripts/
|
|
│
|
|
├── 📖 Documentación
|
|
│ ├── INDEX.md ← Estás aquí
|
|
│ ├── QUICK-START.md ⭐ Guía rápida
|
|
│ ├── README.md 📚 Documentación completa
|
|
│ ├── README-SETUP.md 🔧 Setup avanzado
|
|
│ └── ANALISIS-SCRIPTS-2025-11-08.md 📊 Análisis técnico
|
|
│
|
|
├── 🛠️ Scripts Principales
|
|
│ ├── init-database.sh ⭐ Inicialización (v3.0)
|
|
│ ├── reset-database.sh 🔄 Reset rápido
|
|
│ └── recreate-database.sh ⚠️ Recreación completa
|
|
│
|
|
├── 🔐 Scripts de Gestión
|
|
│ ├── manage-secrets.sh 🔑 Gestión de secrets
|
|
│ ├── update-env-files.sh 🔧 Sincronización .env
|
|
│ └── cleanup-duplicados.sh 🧹 Limpieza
|
|
│
|
|
├── ⚙️ Configuración
|
|
│ └── config/
|
|
│ ├── dev.conf 🛠️ Config desarrollo
|
|
│ └── prod.conf 🚀 Config producción
|
|
│
|
|
├── 📊 Inventario
|
|
│ └── inventory/
|
|
│ ├── list-tables.sh 📋 Listar tablas
|
|
│ ├── list-functions.sh ⚙️ Listar funciones
|
|
│ ├── list-enums.sh 🏷️ Listar ENUMs
|
|
│ ├── list-rls.sh 🔒 Listar RLS
|
|
│ ├── list-indexes.sh 📈 Listar índices
|
|
│ ├── list-views.sh 👁️ Listar vistas
|
|
│ ├── list-triggers.sh ⚡ Listar triggers
|
|
│ ├── list-seeds.sh 🌱 Listar seeds
|
|
│ └── generate-all-inventories.sh 📊 Generar todos
|
|
│
|
|
├── 🔄 Migraciones
|
|
│ └── migrations/
|
|
│ └── *.sql 📝 Migraciones SQL
|
|
│
|
|
├── 💾 Backup y Restore
|
|
│ ├── backup/ 💾 Scripts de backup
|
|
│ └── restore/ ♻️ Scripts de restore
|
|
│
|
|
├── 🛠️ Utilidades
|
|
│ └── utilities/ 🔧 Herramientas varias
|
|
│
|
|
└── 📦 Obsoletos
|
|
└── deprecated/
|
|
├── init-database-v1.sh 📦 Versión 1.0
|
|
├── init-database-v2.sh 📦 Versión 2.0
|
|
└── init-database.sh.backup-* 📦 Backups
|
|
```
|
|
|
|
---
|
|
|
|
## 🔍 BÚSQUEDA RÁPIDA
|
|
|
|
### ¿Cómo hacer...?
|
|
|
|
**Inicializar BD por primera vez:**
|
|
```bash
|
|
./init-database.sh --env dev --force
|
|
```
|
|
|
|
**Resetear datos rápidamente:**
|
|
```bash
|
|
PASSWORD=$(grep 'Database Password' ../database-credentials-dev.txt | cut -d: -f2 | xargs)
|
|
./reset-database.sh --env dev --password "$PASSWORD"
|
|
```
|
|
|
|
**Ver credenciales actuales:**
|
|
```bash
|
|
cat ../database-credentials-dev.txt
|
|
```
|
|
|
|
**Listar todos los objetos de BD:**
|
|
```bash
|
|
cd inventory/
|
|
./generate-all-inventories.sh
|
|
```
|
|
|
|
**Aplicar migración SQL:**
|
|
```bash
|
|
# Agregar migración a migrations/
|
|
# Luego resetear BD
|
|
./reset-database.sh --env dev --password "pass"
|
|
```
|
|
|
|
**Verificar estado de BD:**
|
|
```bash
|
|
# Verificar conexión
|
|
psql -U gamilit_user -d gamilit_platform -c "SELECT version();"
|
|
|
|
# Contar objetos
|
|
psql -U gamilit_user -d gamilit_platform -c "\dt *.*" | wc -l # Tablas
|
|
psql -U gamilit_user -d gamilit_platform -c "\df *.*" | wc -l # Funciones
|
|
psql -U gamilit_user -d gamilit_platform -c "\dn" | wc -l # Schemas
|
|
```
|
|
|
|
---
|
|
|
|
## 📊 ESTADO DE LA BASE DE DATOS
|
|
|
|
### Objetos Implementados (según INVENTARIO-COMPLETO-BD-2025-11-07.md)
|
|
|
|
| Tipo de Objeto | Cantidad | Estado |
|
|
|----------------|----------|--------|
|
|
| **Schemas** | 13 | ✅ Completo |
|
|
| **Tablas** | 61 | ✅ Completo |
|
|
| **Funciones** | 61 | ✅ Completo |
|
|
| **Vistas** | 12 | ✅ Completo |
|
|
| **Vistas Materializadas** | 4 | ✅ Completo |
|
|
| **Triggers** | 49 | ✅ Completo |
|
|
| **Índices** | 74 archivos | ✅ Completo |
|
|
| **RLS Policies** | 24 archivos | ✅ Completo |
|
|
| **ENUMs** | 36 | ✅ Completo |
|
|
|
|
**Total:** 285 archivos SQL
|
|
|
|
**Calidad:** A+ (98.8%)
|
|
|
|
---
|
|
|
|
## ⚠️ ADVERTENCIAS IMPORTANTES
|
|
|
|
### Desarrollo (dev)
|
|
|
|
✅ **Puedes:**
|
|
- Usar `--force` libremente
|
|
- Recrear BD frecuentemente
|
|
- Experimentar con scripts
|
|
|
|
❌ **Evita:**
|
|
- Usar secrets de producción
|
|
- Omitir logs de errores
|
|
|
|
### Producción (prod)
|
|
|
|
✅ **Debes:**
|
|
- SIEMPRE hacer backup primero
|
|
- Usar dotenv-vault
|
|
- Validar dos veces
|
|
- Notificar al equipo
|
|
|
|
❌ **NUNCA:**
|
|
- Usar `--force` sin validación
|
|
- Recrear sin backup
|
|
- Ejecutar sin pruebas previas
|
|
|
|
---
|
|
|
|
## 🐛 TROUBLESHOOTING RÁPIDO
|
|
|
|
| Error | Solución Rápida |
|
|
|-------|----------------|
|
|
| "psql no encontrado" | `sudo apt install postgresql-client` |
|
|
| "No se puede conectar" | `sudo systemctl start postgresql` |
|
|
| "Usuario ya existe" | `./recreate-database.sh --env dev` |
|
|
| "Permisos denegados" | `chmod +x *.sh` |
|
|
| "BD en uso" | `sudo -u postgres psql -c "SELECT pg_terminate_backend..."` |
|
|
|
|
Para más detalles: `cat QUICK-START.md | grep -A 10 "Troubleshooting"`
|
|
|
|
---
|
|
|
|
## 📞 OBTENER AYUDA
|
|
|
|
### Orden de consulta
|
|
|
|
1. **QUICK-START.md** - Casos de uso comunes
|
|
2. **README.md** - Documentación detallada
|
|
3. **ANALISIS-SCRIPTS-2025-11-08.md** - Detalles técnicos
|
|
4. **Logs del script** - Revisa el output del comando
|
|
5. **Equipo de BD** - Si todo falla
|
|
|
|
### Comandos de ayuda
|
|
|
|
```bash
|
|
# Ver ayuda de cualquier script
|
|
./init-database.sh --help
|
|
./reset-database.sh --help
|
|
./recreate-database.sh --help
|
|
```
|
|
|
|
---
|
|
|
|
## ✅ CHECKLIST RÁPIDO
|
|
|
|
### Primera Vez en el Proyecto
|
|
|
|
- [ ] Leí QUICK-START.md
|
|
- [ ] PostgreSQL está instalado y corriendo
|
|
- [ ] Ejecuté `./init-database.sh --env dev --force`
|
|
- [ ] Verifiqué credenciales en `../database-credentials-dev.txt`
|
|
- [ ] Backend puede conectarse a la BD
|
|
|
|
### Antes de Deployment Producción
|
|
|
|
- [ ] Leí README.md completo
|
|
- [ ] Tengo backup completo de BD actual
|
|
- [ ] Generé secrets con `manage-secrets.sh`
|
|
- [ ] Probé en staging
|
|
- [ ] Tengo plan de rollback
|
|
- [ ] Notifiqué al equipo
|
|
|
|
---
|
|
|
|
## 📈 HISTORIAL DE CAMBIOS
|
|
|
|
### 2025-11-08 - Consolidación v3.0
|
|
|
|
- ✅ Unificadas versiones múltiples de init-database.sh
|
|
- ✅ Movidos scripts obsoletos a deprecated/
|
|
- ✅ Creado QUICK-START.md
|
|
- ✅ Creado ANALISIS-SCRIPTS-2025-11-08.md
|
|
- ✅ Creado INDEX.md (este archivo)
|
|
- ✅ Actualizada documentación completa
|
|
|
|
### Versiones Anteriores
|
|
|
|
- v2.0 (2025-11-02) - Integración con update-env-files
|
|
- v1.0 (Original) - Scripts base
|
|
|
|
---
|
|
|
|
## 🎓 RECURSOS ADICIONALES
|
|
|
|
### Documentación de BD
|
|
|
|
- `INVENTARIO-COMPLETO-BD-2025-11-07.md` - Inventario exhaustivo
|
|
- `REPORTE-VALIDACION-BD-COMPLETO-2025-11-08.md` - Validación completa
|
|
- `MATRIZ-COBERTURA-MODULOS-PLATAFORMA-2025-11-07.md` - Cobertura
|
|
|
|
### Validaciones Cruzadas
|
|
|
|
- `VALIDACION-CRUZADA-INFORME-MIGRACION-2025-11-08.md` - Validación de migración
|
|
|
|
---
|
|
|
|
**Última actualización:** 2025-11-08
|
|
**Mantenido por:** Equipo de Base de Datos GAMILIT
|
|
**Versión:** 3.0
|
|
**Estado:** ✅ Consolidado y Funcional
|
|
|
|
---
|
|
|
|
🎉 **¡Bienvenido a los Scripts de Base de Datos GAMILIT!** 🎉
|
|
|
|
**Próximo paso:** Lee `QUICK-START.md` para empezar
|