workspace/projects/gamilit/apps/database/scripts/validations/validate-gap-fixes.sql
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

235 lines
6.2 KiB
SQL

-- =====================================================
-- Script de Validación: Gaps Database-Backend
-- Fecha: 2025-11-24
-- Tarea: DB-127 Corrección Gaps Coherencia
-- =====================================================
--
-- Este script valida que los 3 gaps identificados estén resueltos:
-- - GAP-DB-001: activity_log con entity_type, entity_id
-- - GAP-DB-002: auth.tenants vista alias
-- - GAP-DB-003: classrooms.is_deleted
--
-- =====================================================
\echo '==================================================='
\echo 'VALIDACIÓN DE GAPS DATABASE-BACKEND'
\echo '==================================================='
\echo ''
-- =====================================================
-- GAP-DB-001: Validar tabla activity_log
-- =====================================================
\echo '--- GAP-DB-001: Tabla audit_logging.activity_log ---'
\echo ''
-- Validar que tabla existe
SELECT
CASE
WHEN EXISTS (
SELECT 1 FROM information_schema.tables
WHERE table_schema = 'audit_logging'
AND table_name = 'activity_log'
)
THEN '✅ Tabla audit_logging.activity_log existe'
ELSE '❌ ERROR: Tabla audit_logging.activity_log NO existe'
END as status;
-- Validar columnas requeridas
\echo ''
\echo 'Validar columnas en activity_log:'
SELECT
column_name,
data_type,
is_nullable,
column_default,
CASE
WHEN column_name IN ('id', 'user_id', 'action_type', 'entity_type', 'entity_id', 'description', 'metadata', 'created_at')
THEN '✅ Requerida'
ELSE ' Opcional'
END as importancia
FROM information_schema.columns
WHERE table_schema = 'audit_logging'
AND table_name = 'activity_log'
ORDER BY ordinal_position;
-- Validar indices
\echo ''
\echo 'Validar índices en activity_log:'
SELECT
indexname,
indexdef
FROM pg_indexes
WHERE schemaname = 'audit_logging'
AND tablename = 'activity_log'
ORDER BY indexname;
-- Validar query backend (query de admin-dashboard.service.ts:184)
\echo ''
\echo 'Validar query backend - Actividad por tipo (últimos 7 días):'
SELECT
action_type,
COUNT(*) as count
FROM audit_logging.activity_log
WHERE created_at > NOW() - INTERVAL '7 days'
GROUP BY action_type
ORDER BY count DESC
LIMIT 5;
-- =====================================================
-- GAP-DB-002: Validar vista auth.tenants
-- =====================================================
\echo ''
\echo '--- GAP-DB-002: Vista auth.tenants (alias) ---'
\echo ''
-- Validar que vista existe
SELECT
CASE
WHEN EXISTS (
SELECT 1 FROM information_schema.views
WHERE table_schema = 'auth'
AND table_name = 'tenants'
)
THEN '✅ Vista auth.tenants existe'
ELSE '❌ ERROR: Vista auth.tenants NO existe'
END as status;
-- Validar query backend (query de admin-dashboard.service.ts:95)
\echo ''
\echo 'Validar query backend - Tenants actualizados (últimos 7 días):'
SELECT
id,
name,
slug,
updated_at
FROM auth.tenants
WHERE updated_at >= NOW() - INTERVAL '7 days'
ORDER BY updated_at DESC
LIMIT 3;
-- Validar que apunta a auth_management.tenants
\echo ''
\echo 'Validar definición de vista:'
SELECT
schemaname,
viewname,
LEFT(definition, 100) || '...' as definition_preview
FROM pg_views
WHERE schemaname = 'auth'
AND viewname = 'tenants';
-- =====================================================
-- GAP-DB-003: Validar classrooms.is_deleted
-- =====================================================
\echo ''
\echo '--- GAP-DB-003: Columna classrooms.is_deleted ---'
\echo ''
-- Validar que columna existe
SELECT
CASE
WHEN EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema = 'social_features'
AND table_name = 'classrooms'
AND column_name = 'is_deleted'
)
THEN '✅ Columna social_features.classrooms.is_deleted existe'
ELSE '❌ ERROR: Columna is_deleted NO existe en classrooms'
END as status;
-- Validar tipo y default de columna
\echo ''
\echo 'Validar columna is_deleted:'
SELECT
column_name,
data_type,
is_nullable,
column_default
FROM information_schema.columns
WHERE table_schema = 'social_features'
AND table_name = 'classrooms'
AND column_name IN ('is_deleted', 'is_archived', 'is_active')
ORDER BY column_name;
-- Validar índice parcial para is_deleted
\echo ''
\echo 'Validar índice parcial para is_deleted:'
SELECT
indexname,
indexdef
FROM pg_indexes
WHERE schemaname = 'social_features'
AND tablename = 'classrooms'
AND indexdef LIKE '%is_deleted%'
ORDER BY indexname;
-- Validar query backend (query de classrooms.service.ts:67)
\echo ''
\echo 'Validar query backend - Classrooms no eliminados:'
SELECT
id,
name,
code,
is_active,
is_archived,
is_deleted
FROM social_features.classrooms
WHERE is_deleted = FALSE
ORDER BY created_at DESC
LIMIT 3;
-- =====================================================
-- RESUMEN FINAL
-- =====================================================
\echo ''
\echo '==================================================='
\echo 'RESUMEN DE VALIDACIÓN'
\echo '==================================================='
\echo ''
SELECT
'✅ GAP-DB-001: activity_log' as gap,
CASE
WHEN COUNT(*) >= 8 THEN '✅ RESUELTO'
ELSE '❌ PENDIENTE'
END as estado
FROM information_schema.columns
WHERE table_schema = 'audit_logging'
AND table_name = 'activity_log'
AND column_name IN ('id', 'user_id', 'action_type', 'entity_type', 'entity_id', 'description', 'metadata', 'created_at')
UNION ALL
SELECT
'✅ GAP-DB-002: auth.tenants' as gap,
CASE
WHEN COUNT(*) = 1 THEN '✅ RESUELTO'
ELSE '❌ PENDIENTE'
END as estado
FROM information_schema.views
WHERE table_schema = 'auth'
AND table_name = 'tenants'
UNION ALL
SELECT
'✅ GAP-DB-003: classrooms.is_deleted' as gap,
CASE
WHEN COUNT(*) = 1 THEN '✅ RESUELTO'
ELSE '❌ PENDIENTE'
END as estado
FROM information_schema.columns
WHERE table_schema = 'social_features'
AND table_name = 'classrooms'
AND column_name = 'is_deleted';
\echo ''
\echo '==================================================='
\echo 'VALIDACIÓN COMPLETADA'
\echo '==================================================='