-- Preserve names in order_items for historical data
ALTER TABLE order_items ADD COLUMN product_name VARCHAR(255) AFTER product_id;
ALTER TABLE order_items ADD COLUMN variant_name VARCHAR(255) AFTER variant_id;

-- Populate existing names
UPDATE order_items oi JOIN products p ON oi.product_id = p.id SET oi.product_name = p.name;
UPDATE order_items oi JOIN product_variants pv ON oi.variant_id = pv.id SET oi.variant_name = pv.name;

-- Modify foreign key to allow hard delete while preserving historical info
ALTER TABLE order_items DROP FOREIGN KEY order_items_ibfk_2;
ALTER TABLE order_items ADD CONSTRAINT order_items_ibfk_2 FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE SET NULL;
