const WP_URL = process.env.WORDPRESS_URL?.replace(/\/$/, "");
const WC_KEY = process.env.WC_CONSUMER_KEY || "";
const WC_SECRET = process.env.WC_CONSUMER_SECRET || "";

export interface WcProduct {
  id: number;
  slug: string;
  name: string;
  price: string;
  regular_price: string;
  sale_price: string;
  sku: string;
  stock_status: string;
  short_description: string;
  description: string;
  images: Array<{ src: string; alt: string }>;
  categories: Array<{ id: number; name: string; slug: string }>;
}

async function wcFetch(path: string, tags?: string[]): Promise<Response> {
  if (!WP_URL) throw new Error("WORDPRESS_URL not set");
  const url = `${WP_URL}/wp-json/wc/v3/${path}${path.includes("?") ? "&" : "?"}consumer_key=${WC_KEY}&consumer_secret=${WC_SECRET}`;
  return fetch(url, { next: { revalidate: 300, ...(tags ? { tags } : {}) } });
}

export async function getProduct(slug: string): Promise<WcProduct | null> {
  try {
    const res = await wcFetch(`products?slug=${encodeURIComponent(slug)}&per_page=1`, [`product:${slug}`]);
    if (!res.ok) return null;
    const list: WcProduct[] = await res.json();
    return list[0] ?? null;
  } catch {
    return null;
  }
}

export async function getAllProductSlugs(): Promise<string[]> {
  try {
    const res = await wcFetch("products?per_page=100&_fields=slug", ["products"]);
    if (!res.ok) return [];
    const products: Array<{ slug: string }> = await res.json();
    return products.map((p) => p.slug);
  } catch {
    return [];
  }
}
