// document.api.ts import { supabaseBrowser } from '../supabase/client' import { invokeEdge } from '../supabase/invokeEdge' import { requireData, throwIfError } from './_helpers' import type { Tables } from '@/types/supabase' const EDGE = { carbone_io_wrapper: 'carbone-io-wrapper', } as const interface GeneratePdfParams { plan_estudio_id: string convertTo?: 'pdf' } interface GeneratePdfParamsAsignatura { asignatura_id: string convertTo?: 'pdf' } export async function fetchPlanPdf({ plan_estudio_id, convertTo, }: GeneratePdfParams): Promise { return await invokeEdge( EDGE.carbone_io_wrapper, { action: 'downloadReport', plan_estudio_id, body: convertTo ? { convertTo } : {}, }, { headers: { 'Content-Type': 'application/json', }, responseType: 'blob', }, ) } export async function fetchAsignaturaPdf({ asignatura_id, convertTo, }: GeneratePdfParamsAsignatura): Promise { const supabase = supabaseBrowser() const { data, error } = await supabase .from('asignaturas') .select('*') .eq('id', asignatura_id) .single() throwIfError(error) const row = requireData( data as Pick< Tables<'asignaturas'>, 'datos' | 'contenido_tematico' | 'criterios_de_evaluacion' >, 'Asignatura no encontrada', ) const body: Record = { data: row, } if (convertTo) body.convertTo = convertTo return await invokeEdge( EDGE.carbone_io_wrapper, { action: 'downloadReport', asignatura_id, body: { ...body, }, }, { headers: { 'Content-Type': 'application/json', }, responseType: 'blob', }, ) }