// El cliente NUNCA consulta Supabase directamente.
// Toda la comunicación va a través de los Route Handlers /api/dashboard/[widget].

import type { DashboardFilters } from './dashboard-types'
import { filtersToQuery } from './dashboard-utils'

async function fetchWidget<T>(widget: string, surveyId: string, filters: DashboardFilters): Promise<T> {
  const qs = filtersToQuery(surveyId, filters)
  const res = await fetch(`/api/dashboard/${widget}?${qs}`, { cache: 'no-store' })
  if (!res.ok) throw new Error(`Widget ${widget}: ${res.status}`)
  return res.json()
}

export const queries = {
  kpis:         (sid: string, f: DashboardFilters) => fetchWidget('kpis', sid, f),
  prevalencia:  (sid: string, f: DashboardFilters) => fetchWidget('prevalencia', sid, f),
  heatmap:      (sid: string, f: DashboardFilters) => fetchWidget('heatmap', sid, f),
  distribucion: (sid: string, f: DashboardFilters) => fetchWidget('distribucion', sid, f),
  apoyos:       (sid: string, f: DashboardFilters) => fetchWidget('apoyos', sid, f),
  score:        (sid: string, f: DashboardFilters) => fetchWidget('score', sid, f),
  piramide:     (sid: string, f: DashboardFilters) => fetchWidget('piramide', sid, f),
  intensidad:   (sid: string, f: DashboardFilters) => fetchWidget('intensidad', sid, f),
  saturacion:   (sid: string, f: DashboardFilters) => fetchWidget('saturacion', sid, f),
}
