workspace/projects/gamilit/apps/database/tests/test-initialize-user-stats-update.sql
rckrdmrd ea1879f4ad feat: Initial workspace structure with multi-level Git configuration
- Configure workspace Git repository with comprehensive .gitignore
- Add Odoo as submodule for ERP reference code
- Include documentation: SETUP.md, GIT-STRUCTURE.md
- Add gitignore templates for projects (backend, frontend, database)
- Structure supports independent repos per project/subproject level

Workspace includes:
- core/ - Reusable patterns, modules, orchestration system
- projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.)
- knowledge-base/ - Reference code and patterns (includes Odoo submodule)
- devtools/ - Development tools and templates
- customers/ - Client implementations template

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-08 10:44:23 -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 '================================================'