+page.js 1.6 KB
import { supabase } from '$lib/supabase';
import { error } from '@sveltejs/kit';

export async function load({ params, fetch }) {
  const codigo = params.ubigeo;

  // Cargar resumen y población en paralelo
  const [resumenRes, pobRes] = await Promise.all([
    supabase
      .schema('ppto')
      .from('entidad_resumen')
      .select('tipo, tipo_codigo, codigo, desc, desc_padre, gestion, devengado, ranking')
      .eq('codigo', codigo),

    fetch('/poblacion.csv').then(r => r.text())
  ]);

  if (resumenRes.error || !resumenRes.data?.length) {
    throw error(404, 'Ubicación no encontrada');
  }

  // Parsear población para este código
  const poblacionMap = {};
  pobRes.split('\n').slice(1).forEach(line => {
    const [cod, gestion, pob] = line.split(',');
    if (cod === codigo) {
      poblacionMap[parseInt(gestion)] = parseInt(pob);
    }
  });

  // Determinar última gestión
  const gestiones = [...new Set(resumenRes.data.map(d => d.gestion))].sort((a, b) => b - a);
  const ultimaGestion = gestiones[0] || 2025;

  // Cargar distribuciones de la última gestión
  const distRes = await supabase
    .schema('ppto')
    .from('entidad_distribuciones')
    .select('tipo, dimension, gestion, padre, desc_padre, hijo, desc_hijo, devengado')
    .eq('codigo', codigo)
    .eq('gestion', ultimaGestion);

  const firstRow = resumenRes.data[0];

  return {
    nombre: firstRow.desc || `Ubicación ${codigo}`,
    nombrePadre: firstRow.desc_padre || null,
    codigo,
    resumenData: resumenRes.data || [],
    distribucionesData: distRes.data || [],
    gestionInicial: ultimaGestion,
    poblacionMap
  };
}