-- Fix missing product data in order items
-- Updates order items to use actual product names, images, and specifications from the product tables.

DO $$
BEGIN
    -- 1. Update image_url from SKU if available
    UPDATE public.ml_order_items oi
    SET image_url = sku.image_url
    FROM public.ml_product_skus sku
    WHERE oi.sku_id = sku.id 
    AND (oi.image_url IS NULL OR oi.image_url = '');

    -- 2. Update image_url from Product Main Image if still NULL
    UPDATE public.ml_order_items oi
    SET image_url = p.main_image_url
    FROM public.ml_products p
    WHERE oi.product_id = p.id 
    AND (oi.image_url IS NULL OR oi.image_url = '');

    -- 3. Update product_name from Product if it looks like a placeholder
    UPDATE public.ml_order_items oi
    SET product_name = p.name
    FROM public.ml_products p
    WHERE oi.product_id = p.id 
    AND (
        oi.product_name LIKE '%Product%' 
        OR oi.product_name LIKE 'Pending Order%'
        OR oi.product_name = 'Test Product'
    );

    -- 4. Update specifications from SKU if missing
    -- This ensures the frontend shows the correct spec (e.g. "Color: Red")
    UPDATE public.ml_order_items oi
    SET specifications = sku.specifications
    FROM public.ml_product_skus sku
    WHERE oi.sku_id = sku.id 
    AND (oi.specifications IS NULL OR oi.specifications = '{}'::jsonb);

    RAISE NOTICE 'Updated order items with real product data (images, names, specs).';
END $$;
