-- =====================================================================
-- A meglévő menüsorok összekötése az ételtárral
--
-- A kapcsolat (dish_id) csak az utólag felvitt soroknál jött létre — a
-- korábban kézzel begépelt és a behúzott sorok üresen maradtak, ezért
-- rajtuk nem hatott az átvezetés.
--
-- Itt név szerint kötjük össze őket. Csak akkor, ha a névhez pontosan
-- EGY ételtári tétel tartozik: két azonos nevű étel közül nem a
-- migráció dolga választani.
-- =====================================================================

-- Egyértelmű nevek: azok, amikből pontosan egy van az ételtárban.
CREATE TEMPORARY TABLE unique_dish_names AS
  SELECT MIN(id) AS id, name
    FROM dishes
   WHERE is_archived = 0
   GROUP BY name
  HAVING COUNT(*) = 1;

UPDATE menu_items i
  JOIN unique_dish_names d ON d.name = i.name
   SET i.dish_id = d.id
 WHERE i.dish_id IS NULL;

UPDATE menu_day_entries e
  JOIN unique_dish_names d ON d.name = e.soup
   SET e.soup_dish_id = d.id
 WHERE e.soup_dish_id IS NULL;

UPDATE menu_day_entries e
  JOIN unique_dish_names d ON d.name = e.main_course
   SET e.main_dish_id = d.id
 WHERE e.main_dish_id IS NULL;

DROP TEMPORARY TABLE unique_dish_names;
