From 662e5d761b30d644eeba0316811d20bf1120223f Mon Sep 17 00:00:00 2001 From: Vula Builder Date: Wed, 5 Aug 2026 18:14:40 +0000 Subject: [PATCH] Deploy --- src/app/api/products/route.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/app/api/products/route.ts diff --git a/src/app/api/products/route.ts b/src/app/api/products/route.ts new file mode 100644 index 0000000..684ff1a --- /dev/null +++ b/src/app/api/products/route.ts @@ -0,0 +1,23 @@ +import { NextRequest, NextResponse } from 'next/server' + +export async function GET(request: NextRequest) { + const { searchParams } = new URL(request.url) + const rawLimit = searchParams.get('limit') || '12' + const parsedLimit = parseInt(rawLimit, 10) + const limit = isNaN(parsedLimit) ? 12 : Math.min(Math.max(parsedLimit, 1), 100) + const categoryId = searchParams.get('categoryId') || undefined + const ids = searchParams.getAll('id[]') + + const vulaUrl = process.env.VULA_CMS_URL || 'https://ide.vulai.co.za' + const projectId = process.env.VULA_CMS_PROJECT_ID || '' + const params = new URLSearchParams({ limit: String(limit) }) + if (categoryId) params.set('category_id', categoryId) + ids.forEach(id => params.append('id[]', id)) + try { + const r = await fetch(`${vulaUrl}/api/store/${projectId}/products?${params}`, { cache: 'no-store' }) + const data = await r.json() + return NextResponse.json(data) + } catch { + return NextResponse.json({ success: false, products: [], count: 0 }, { status: 502 }) + } +}