import WooCommerceRestApi from "@woocommerce/woocommerce-rest-api"; const api = new WooCommerceRestApi({ url: process.env.NEXT_PUBLIC_WOOCOMMERCE_URL || "", consumerKey: process.env.NEXT_PUBLIC_WOOCOMMERCE_CONSUMER_KEY || "", consumerSecret: process.env.NEXT_PUBLIC_WOOCOMMERCE_CONSUMER_SECRET || "", version: "wc/v3", }); export interface WooProduct { id: number; name: string; slug: string; price: string; regular_price: string; sale_price: string; description: string; short_description: string; status: "publish" | "draft" | "private"; stock_status: "instock" | "outofstock"; images: { id: number; src: string; alt: string }[]; sku: string; categories: { id: number; name: string; slug: string }[]; meta_data: { key: string; value: string }[]; } export interface WooCategory { id: number; name: string; slug: string; description: string; image: { src: string } | null; } export async function getProducts(perPage = 100): Promise { try { const response = await api.get("products", { per_page: perPage }); return response.data; } catch (error) { console.error("Error fetching products:", error); return []; } } export async function getProduct(id: number): Promise { try { const response = await api.get(`products/${id}`); return response.data; } catch (error) { console.error(`Error fetching product ${id}:`, error); return null; } } export async function getProductBySlug(slug: string): Promise { try { const response = await api.get("products", { slug }); return response.data[0] || null; } catch (error) { console.error(`Error fetching product by slug ${slug}:`, error); return null; } } export async function getCategories(): Promise { try { const response = await api.get("product-categories", { per_page: 100 }); return response.data; } catch (error) { console.error("Error fetching categories:", error); return []; } } export async function getProductsByCategory( categoryId: number ): Promise { try { const response = await api.get("products", { category: categoryId, per_page: 100, }); return response.data; } catch (error) { console.error(`Error fetching products for category ${categoryId}:`, error); return []; } } export function formatPrice(price: string, currency = "RSD"): string { const num = parseFloat(price); if (isNaN(num)) return "0 RSD"; return new Intl.NumberFormat("sr-RS", { style: "currency", currency: currency, minimumFractionDigits: 0, }).format(num); } export function getProductImage(product: WooProduct): string { if (product.images && product.images.length > 0) { return product.images[0].src; } return "/placeholder-product.jpg"; } export default api;