GameControl - Gestión de Salas Gaming

Solución Error: configuracion.clave does not exist

❌ Problema Detectado

El sistema estaba intentando acceder a columnas clave y valor en la tabla configuracion, pero esta tabla usa un esquema singleton con una columna datos de tipo JSONB.

Error Original:

Error consultando configuracion: column configuracion.clave does not exist

✅ Solución Aplicada

1. Actualización de gastos.js

2. Actualización de ajustes.js

3. Actualización de salas.js

📋 Estructura de la Tabla Configuracion

CREATE TABLE configuracion (
    id INTEGER PRIMARY KEY DEFAULT 1 CHECK (id = 1),
    datos JSONB DEFAULT '{}'::jsonb,
    updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);

Características:

Ejemplo de uso:

// Cargar configuración
const resultado = await databaseService.select('configuracion', { limite: 1 });
const datos = resultado.data[0].datos;
const categorias = datos.categorias_gastos || [];

// Guardar configuración
const datosNuevos = { ...datos, categorias_gastos: nuevasCategorias };
await databaseService.update('configuracion', 1, { 
    datos: datosNuevos,
    updated_at: new Date().toISOString()
});

🔍 Verificación

Para verificar que la tabla existe y está correctamente configurada, ejecuta en Supabase SQL Editor:

-- Ver estructura de la tabla
SELECT column_name, data_type 
FROM information_schema.columns 
WHERE table_name = 'configuracion';

-- Ver datos actuales
SELECT * FROM configuracion;

-- Si no existe, crearla
CREATE TABLE IF NOT EXISTS configuracion (
    id INTEGER PRIMARY KEY DEFAULT 1 CHECK (id = 1),
    datos JSONB DEFAULT '{}'::jsonb,
    updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);

-- Insertar registro inicial
INSERT INTO configuracion (id, datos)
VALUES (1, '{}'::jsonb)
ON CONFLICT (id) DO NOTHING;

🎯 Próximos Pasos

⚠️ IMPORTANTE: Limpiar Cache del Navegador

El error persiste porque tu navegador tiene una versión antigua cacheada de los archivos JavaScript. Sigue estos pasos:

Opción 1: Usar la página de limpieza automática (Recomendado)

  1. Abre: limpiar_cache.html
  2. Haz clic en “Limpiar Cache y Recargar”
  3. Serás redirigido automáticamente a gastos.html

Opción 2: Hard Refresh Manual

Opción 3: Limpiar cache manualmente

  1. Abre DevTools (F12)
  2. Ve a la pestaña “Application” (Chrome) o “Almacenamiento” (Firefox)
  3. Click derecho en “Cache Storage” → “Clear”
  4. Borra “Local Storage” y “Session Storage”
  5. Recarga la página (F5)

🔍 Verificar que la solución funcionó

Después de limpiar la cache, abre la consola del navegador (F12) y debes ver:

✅ gastos.js v20260119 cargado - Esquema singleton JSONB

Si ves este mensaje, el archivo correcto se cargó y el error debe desaparecer.

📋 Checklist Final

  1. ✅ Archivos JS actualizados con esquema singleton
  2. ✅ Cache busters agregados a gastos.html
  3. ⚠️ PENDIENTE: Limpiar cache del navegador
  4. ✅ Verificar mensaje en consola
  5. ✅ Probar crear una nueva categoría de gasto
  6. 🔄 Si persisten errores de permisos, ejecutar: fix_configuracion_singleton.sql

📝 Archivos Modificados

🔍 Cambios Totales

⚠️ Nota Importante

El código ahora es 100% consistente con el esquema singleton de la tabla configuracion. Ya no hay lógica de detección dinámica de esquemas, lo que elimina completamente la posibilidad de errores por columnas inexistentes.