diff --git a/estore/src/app/api/admin/items/[id]/route.ts b/estore/src/app/api/admin/items/[id]/route.ts index 90d7375..8720901 100644 --- a/estore/src/app/api/admin/items/[id]/route.ts +++ b/estore/src/app/api/admin/items/[id]/route.ts @@ -1,5 +1,6 @@ import { NextResponse } from 'next/server' import { setOverride, clearOverride } from '@/lib/overrides' +import { invalidateCatalogCache } from '@/lib/catalog-cache' import type { ItemOverride } from '@/lib/overrides' export async function PATCH( @@ -9,6 +10,7 @@ export async function PATCH( try { const patch: Partial = await request.json() setOverride(params.id, patch) + invalidateCatalogCache() // shop picks up override changes on next request return NextResponse.json({ ok: true }) } catch (err) { console.error('[admin/items/patch] error:', err) @@ -23,6 +25,7 @@ export async function DELETE( ) { try { clearOverride(params.id) + invalidateCatalogCache() // shop picks up reset on next request return NextResponse.json({ ok: true }) } catch (err) { console.error('[admin/items/delete] error:', err) diff --git a/estore/src/app/api/catalog/route.ts b/estore/src/app/api/catalog/route.ts index 76deca5..07af633 100644 --- a/estore/src/app/api/catalog/route.ts +++ b/estore/src/app/api/catalog/route.ts @@ -3,6 +3,8 @@ import { getCatalog } from '@/lib/catalog-cache' import { readOverrides } from '@/lib/overrides' import type { CatalogItem } from '@/data/mock-catalog' +export const dynamic = 'force-dynamic' + function applyOverrides(items: CatalogItem[]): CatalogItem[] { const overrides = readOverrides() diff --git a/estore/src/lib/catalog-cache.ts b/estore/src/lib/catalog-cache.ts index a109ea7..3822c85 100644 --- a/estore/src/lib/catalog-cache.ts +++ b/estore/src/lib/catalog-cache.ts @@ -53,6 +53,12 @@ export async function refreshCatalog(): Promise<{ items: CatalogItem[]; fetchedA return { items, fetchedAt: new Date() } } +/** Drop the in-process memory cache so the next request re-reads from disk. + * Call this after writing overrides so the shop picks up changes immediately. */ +export function invalidateCatalogCache(): void { + memCache = null +} + // ── Get (from cache or fetch) ───────────────────────────────────────────────── export async function getCatalog(): Promise<{ items: CatalogItem[]; fetchedAt: Date | null }> {