/** * API helper — warstwa dostępu do Systemu A (Vilmax Cockpit). * W demie: fetch z Route Handlers (mock). W produkcji: fetch z realnego backendu. * API_BASE_URL jest server-only (brak NEXT_PUBLIC_ prefix) — nie trafia do client bundle. */ import type { Product, Category } from "./types"; import { getProductBySku as mockGetProductBySku, getProductsByCategory as mockGetProductsByCategory, getCategoryBySlug as mockGetCategoryBySlug, getAllProducts as mockGetAllProducts, } from "./master-json"; const API_BASE_URL = process.env.API_BASE_URL ?? `http://localhost:${process.env.PORT ?? 3000}`; /** * W demie: czytamy bezpośrednio z mock module (szybciej, zero HTTP). * W produkcji: zamień na fetch(`${API_BASE_URL}/api/products/${sku}`). * Kod po stronie Server Component jest identyczny — tylko źródło danych się zmienia. */ export async function fetchProduct(sku: string): Promise { // Produkcyjny wzorzec (zakomentowany — demo używa mocka): // const res = await fetch(`${API_BASE_URL}/api/products/${sku}`, { // next: { revalidate: 60 }, // }); // if (!res.ok) return null; // return res.json(); return mockGetProductBySku(sku) ?? null; } export async function fetchProductsByCategory( slug: string, ): Promise { return mockGetProductsByCategory(slug); } export async function fetchCategory(slug: string): Promise { return mockGetCategoryBySlug(slug) ?? null; } export async function fetchAllProducts(): Promise { return mockGetAllProducts(); } export { API_BASE_URL };