workspace/projects/gamilit/apps/database/scripts/INDEX.md
rckrdmrd 289c5a4ee5
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
Gamilit: Backend fixes, frontend API updates, deployment guides and validations
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>
2025-12-18 23:42:48 -06:00

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