import { queryOptions } from "@tanstack/react-query"; import { jsonQuery, paginatedJsonQuery } from "../apiAdapter"; export const offerCustomersOptions = () => queryOptions({ queryKey: ["offer-customers"], queryFn: () => jsonQuery>("/api/admin/customers"), staleTime: 2 * 60_000, }); export const offerTemplatesOptions = (action?: string) => queryOptions({ queryKey: ["offer-templates", action ?? "all"], queryFn: () => { const url = action ? `/api/admin/offers-templates?action=${action}` : "/api/admin/offers-templates"; return jsonQuery[]>(url); }, }); export const offerListOptions = (filters: { search?: string; sort?: string; order?: string; page?: number; perPage?: number; }) => queryOptions({ queryKey: ["offers", "list", filters], queryFn: () => { const params = new URLSearchParams(); if (filters.search) params.set("search", filters.search); if (filters.sort) params.set("sort", filters.sort); if (filters.order) params.set("order", filters.order); if (filters.page) params.set("page", String(filters.page)); if (filters.perPage) params.set("per_page", String(filters.perPage)); const qs = params.toString(); return paginatedJsonQuery(`/api/admin/offers${qs ? `?${qs}` : ""}`); }, }); export const offerDetailOptions = (id: string | undefined) => queryOptions({ queryKey: ["offers", id], queryFn: () => jsonQuery>(`/api/admin/offers/${id}`), enabled: !!id, }); export const offerNextNumberOptions = () => queryOptions({ queryKey: ["offers", "next-number"], queryFn: () => jsonQuery<{ next_number?: string; number?: string }>( "/api/admin/offers/next-number", ), });