diff --git a/src/lib/shopifySync.ts b/src/lib/shopifySync.ts index 3c6fd2a..815cb27 100644 --- a/src/lib/shopifySync.ts +++ b/src/lib/shopifySync.ts @@ -54,18 +54,26 @@ function extractNextUrl(linkHeader: string | null): string | null { /** * Récupère tous les produits Shopify (actifs + drafts), en paginant. - * Limite : 250 par page via cursor-based pagination. + * L'API REST ne supporte pas status=any — on fait deux passes (active + draft). */ export async function fetchAllShopifyProducts(): Promise { + const [active, draft] = await Promise.all([ + fetchByStatus('active'), + fetchByStatus('draft'), + ]) + return [...active, ...draft] +} + +async function fetchByStatus(status: 'active' | 'draft'): Promise { const { baseUrl, headers } = getConfig() const all: ShopifyProductFull[] = [] let url: string | null = - `${baseUrl}/products.json?limit=250&fields=id,title,handle,status,body_html,variants&status=any` + `${baseUrl}/products.json?limit=250&fields=id,title,handle,status,body_html,variants&status=${status}` while (url) { const res = await fetch(url, { headers }) - if (!res.ok) throw new Error(`Shopify fetch error: ${res.status}`) + if (!res.ok) throw new Error(`Shopify fetch error (${status}): ${res.status}`) const data = await res.json() all.push(...(data.products as ShopifyAPIProduct[]).map(toSyncProduct)) url = extractNextUrl(res.headers.get('Link'))