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

12 KiB

📚 Í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í:

# 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

📁 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:

./init-database.sh --env dev --force

Resetear datos rápidamente:

PASSWORD=$(grep 'Database Password' ../database-credentials-dev.txt | cut -d: -f2 | xargs)
./reset-database.sh --env dev --password "$PASSWORD"

Ver credenciales actuales:

cat ../database-credentials-dev.txt

Listar todos los objetos de BD:

cd inventory/
./generate-all-inventories.sh

Aplicar migración SQL:

# Agregar migración a migrations/
# Luego resetear BD
./reset-database.sh --env dev --password "pass"

Verificar estado de BD:

# 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

# 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