From 1e48ca142f4d136850e7b74dec825d2e4acc3f86 Mon Sep 17 00:00:00 2001 From: Mathieu Date: Tue, 9 Jun 2026 00:05:53 +0200 Subject: [PATCH] fix: remplacer status=any par deux appels active+draft (API REST Shopify) --- src/lib/shopifySync.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) 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'))