import { useQuery } from '@tanstack/react-query'; import { PautaSchema, ProdutoListResponseSchema, ProdutoDetailSchema, type ProdutoListQuery, type ProdutoListResponse, type ProdutoDetail, type Pauta, } from '@sar/api-interface'; import { z } from 'zod'; import { apiFetch } from '../api-client'; export function usePautas() { return useQuery({ queryKey: ['catalog', 'pautas'], queryFn: async () => { const res = await apiFetch('/catalog/pautas'); return z.array(PautaSchema).parse(res); }, staleTime: 10 * 60 * 1000, }); } export function useCatalog(params: Partial = {}) { const search = new URLSearchParams(); if (params.q) search.set('q', params.q); if (params.codGrupo) search.set('codGrupo', String(params.codGrupo)); if (params.idPauta) search.set('idPauta', String(params.idPauta)); if (params.page) search.set('page', String(params.page)); if (params.limit) search.set('limit', String(params.limit)); const qs = search.toString(); return useQuery({ queryKey: ['catalog', params], queryFn: async () => { const res = await apiFetch(`/catalog${qs ? `?${qs}` : ''}`); return ProdutoListResponseSchema.parse(res); }, staleTime: 4 * 60 * 60 * 1000, }); } export function useProdutoDetail(id: number | undefined) { return useQuery({ queryKey: ['catalog', id], enabled: id != null, queryFn: async () => { const res = await apiFetch(`/catalog/${id}`); return ProdutoDetailSchema.parse(res); }, }); }