From 94894181eae66ac1b67de0900adaed7a63be23c7 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Fri, 13 Feb 2026 13:23:28 -0700 Subject: [PATCH] Filter store to only show artworks with GBP prices set The store was fetching all 2,324 artworks and filtering client-side, resulting in 656 items shown (including imported catalog entries with only USD prices and no images). Now filters at the Directus API level for artworks with price_gbp set, showing only the 19 actual store items. Co-Authored-By: Claude Opus 4.6 --- frontend/src/app/store/page.tsx | 7 ++----- frontend/src/lib/directus.ts | 4 ++++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/frontend/src/app/store/page.tsx b/frontend/src/app/store/page.tsx index 3b34d10..06c947a 100644 --- a/frontend/src/app/store/page.tsx +++ b/frontend/src/app/store/page.tsx @@ -13,11 +13,8 @@ export const revalidate = 0; async function getShopItems(): Promise<{ available: Artwork[]; sold: Artwork[] }> { try { - const allArtworks = await getArtworks({}); - const available = allArtworks.filter( - (a) => a.status === 'published' && a.price && a.price > 0 - ); - const sold = allArtworks.filter((a) => a.status === 'sold'); + const available = await getArtworks({ status: 'published', forSale: true }); + const sold = await getArtworks({ status: 'sold', forSale: true }); return { available, sold }; } catch (error) { console.error('Error fetching shop items:', error); diff --git a/frontend/src/lib/directus.ts b/frontend/src/lib/directus.ts index df4d493..9cac97c 100644 --- a/frontend/src/lib/directus.ts +++ b/frontend/src/lib/directus.ts @@ -238,10 +238,14 @@ export async function getArtworks(options?: { series?: string; limit?: number; fields?: string[]; + forSale?: boolean; }): Promise { const filter: Record = {}; if (options?.status) filter.status = { _eq: options.status }; if (options?.series) filter.series = { _eq: options.series }; + if (options?.forSale) { + filter.price_gbp = { _nnull: true, _gt: 0 }; + } const result = await directus.request( readItems('artworks', {