workspace-v1/projects/gamilit/database/tests/test-initialize-user-stats-update.sql
Adrian Flores Cortes 967ab360bb Initial commit: Workspace v1 with 3-layer architecture
Structure:
- control-plane/: Registries, SIMCO directives, CI/CD templates
- projects/: Gamilit, ERP-Suite, Trading-Platform, Betting-Analytics
- shared/: Libs catalog, knowledge-base

Key features:
- Centralized port, domain, database, and service registries
- 23 SIMCO directives + 6 fundamental principles
- NEXUS agent profiles with delegation rules
- Validation scripts for workspace integrity
- Dockerfiles for all services
- Path aliases for quick reference

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 00:35:19 -06:00

116 lines
3.9 KiB
SQL

-- =====================================================
-- Script de Validación: initialize_user_stats actualizado
-- Propósito: Validar que la función modificada compila sin errores
-- Fecha: 2025-11-24
-- =====================================================
-- Este script valida:
-- 1. La función initialize_user_stats compila correctamente
-- 2. La función initialize_user_missions existe
-- 3. La llamada a initialize_user_missions usa el FK correcto
\echo '================================================'
\echo 'VALIDACIÓN: initialize_user_stats actualizado'
\echo '================================================'
\echo ''
-- 1. Verificar que la función initialize_user_missions existe
\echo '1. Verificando existencia de initialize_user_missions...'
SELECT
p.proname as "Función",
pg_get_function_identity_arguments(p.oid) as "Parámetros",
CASE
WHEN p.proname = 'initialize_user_missions' THEN '✅ EXISTE'
ELSE '❌ NO EXISTE'
END as "Status"
FROM pg_proc p
JOIN pg_namespace n ON p.pronamespace = n.oid
WHERE n.nspname = 'gamilit'
AND p.proname = 'initialize_user_missions';
\echo ''
-- 2. Verificar que la función initialize_user_stats existe
\echo '2. Verificando existencia de initialize_user_stats...'
SELECT
p.proname as "Función",
pg_get_function_result(p.oid) as "Retorna",
CASE
WHEN p.proname = 'initialize_user_stats' THEN '✅ EXISTE'
ELSE '❌ NO EXISTE'
END as "Status"
FROM pg_proc p
JOIN pg_namespace n ON p.pronamespace = n.oid
WHERE n.nspname = 'gamilit'
AND p.proname = 'initialize_user_stats';
\echo ''
-- 3. Verificar FK en missions table
\echo '3. Verificando FK de missions.user_id...'
SELECT
tc.constraint_name as "Constraint",
ccu.table_schema || '.' || ccu.table_name as "Tabla Referenciada",
ccu.column_name as "Columna Referenciada",
CASE
WHEN ccu.table_name = 'profiles' AND ccu.column_name = 'id' THEN '✅ CORRECTO (profiles.id)'
ELSE '❌ INCORRECTO'
END as "Validación FK"
FROM information_schema.table_constraints tc
JOIN information_schema.key_column_usage kcu
ON tc.constraint_name = kcu.constraint_name
AND tc.table_schema = kcu.table_schema
JOIN information_schema.constraint_column_usage ccu
ON ccu.constraint_name = tc.constraint_name
AND ccu.table_schema = tc.table_schema
WHERE tc.table_schema = 'gamification_system'
AND tc.table_name = 'missions'
AND kcu.column_name = 'user_id'
AND tc.constraint_type = 'FOREIGN KEY';
\echo ''
-- 4. Mostrar definición actual de initialize_user_stats
\echo '4. Código fuente de initialize_user_stats (últimas 15 líneas)...'
\echo 'Buscando línea con initialize_user_missions...'
\echo ''
-- Ver las últimas líneas de la función
SELECT
regexp_split_to_table(
pg_get_functiondef(p.oid),
E'\n'
) as "Línea de código"
FROM pg_proc p
JOIN pg_namespace n ON p.pronamespace = n.oid
WHERE n.nspname = 'gamilit'
AND p.proname = 'initialize_user_stats'
LIMIT 5 OFFSET (
SELECT COUNT(*)
FROM regexp_split_to_table(
pg_get_functiondef(p2.oid),
E'\n'
)
FROM pg_proc p2
JOIN pg_namespace n2 ON p2.pronamespace = n2.oid
WHERE n2.nspname = 'gamilit'
AND p2.proname = 'initialize_user_stats'
) - 15;
\echo ''
\echo '================================================'
\echo 'INSTRUCCIONES PARA APLICAR CAMBIO'
\echo '================================================'
\echo ''
\echo 'El archivo DDL ha sido modificado en:'
\echo ' apps/database/ddl/schemas/gamilit/functions/04-initialize_user_stats.sql'
\echo ''
\echo 'Para aplicar el cambio:'
\echo ' 1. Recrear BD completa: ./drop-and-recreate-database.sh'
\echo ' 2. O ejecutar solo la función:'
\echo ' psql -d gamilit_platform -f ddl/schemas/gamilit/functions/04-initialize_user_stats.sql'
\echo ''
\echo '================================================'
\echo 'FIN DE VALIDACIÓN'
\echo '================================================'