- 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>
116 lines
3.9 KiB
SQL
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 '================================================'
|