import { withAuth } from '../../../lib/with-auth';

const API_BASE = process.env.NEXT_PUBLIC_API_URL_INTERNAL || 'http://recipe-api:8080';

export const POST = withAuth(async (req, session) => {
  try {
    const body = await req.json();
    const { name } = body;

    if (!name || typeof name !== 'string') {
      return Response.json({ error: 'Name is required' }, { status: 400 });
    }

    const res = await fetch(`${API_BASE}/api/products`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${session.accessToken}` },
      body: JSON.stringify({ name }),
    });

    if (!res.ok) {
      const e = await res.json().catch(() => ({}));
      return Response.json(
        { error: e.message ?? `HTTP ${res.status}` },
        { status: res.status },
      );
    }

    const product = await res.json();
    return Response.json({
      id: product.id,
      name: product.name,
      canonicalName: product.canonicalName ?? null,
    });
  } catch (err) {
    console.error('[products-create] Error:', err);
    return Response.json(
      { error: err instanceof Error ? err.message : 'Unknown error' },
      { status: 500 },
    );
  }
});
