-- Миграция для добавления поддержки двух меню
-- Описание: Добавляет поле menu_id в таблицу position для разделения данных между меню

-- Проверяем, существует ли уже поле menu_id
-- Если поле уже существует, миграция будет пропущена
PRAGMA table_info(position);

-- Добавляем поле menu_id со значением по умолчанию 1 (первое меню)
-- Это позволит существующим данным автоматически получить menu_id = 1
ALTER TABLE position ADD COLUMN menu_id INTEGER DEFAULT 1;

-- Обновляем все существующие записи, устанавливая menu_id = 1
-- Это нужно для случаев, когда поле было добавлено без DEFAULT
UPDATE position SET menu_id = 1 WHERE menu_id IS NULL;

-- Удаляем старое ограничение UNIQUE на поле position
-- (SQLite не поддерживает DROP CONSTRAINT напрямую, поэтому пересоздаем таблицу)
-- Сначала создаем временную таблицу с новой структурой
CREATE TABLE position_new (
    position INTEGER NOT NULL,
    menu_id INTEGER NOT NULL DEFAULT 1,
    up_text TEXT,
    main_text TEXT,
    celsius_text TEXT,
    price_text TEXT,
    up_font INTEGER,
    main_font INTEGER,
    celsius_font INTEGER,
    price_font INTEGER,
    up_xy TEXT,
    main_xy TEXT,
    celsius_xy TEXT,
    price_xy TEXT,
    PRIMARY KEY (position, menu_id)
);

-- Копируем данные из старой таблицы, явно указывая menu_id = 1
INSERT INTO position_new (position, menu_id, up_text, main_text, celsius_text, price_text, 
                         up_font, main_font, celsius_font, price_font, 
                         up_xy, main_xy, celsius_xy, price_xy)
SELECT position, 1, up_text, main_text, celsius_text, price_text,
       up_font, main_font, celsius_font, price_font,
       up_xy, main_xy, celsius_xy, price_xy
FROM position;

-- Копируем данные из старой таблицы, явно указывая menu_id = 2
INSERT INTO position_new (position, menu_id, up_text, main_text, celsius_text, price_text, 
                         up_font, main_font, celsius_font, price_font, 
                         up_xy, main_xy, celsius_xy, price_xy)
SELECT position, 2, up_text, main_text, celsius_text, price_text,
       up_font, main_font, celsius_font, price_font,
       up_xy, main_xy, celsius_xy, price_xy
FROM position;

-- Копируем данные из старой таблицы, явно указывая menu_id = 3
INSERT INTO position_new (position, menu_id, up_text, main_text, celsius_text, price_text, 
                         up_font, main_font, celsius_font, price_font, 
                         up_xy, main_xy, celsius_xy, price_xy)
SELECT position, 3, up_text, main_text, celsius_text, price_text,
       up_font, main_font, celsius_font, price_font,
       up_xy, main_xy, celsius_xy, price_xy
FROM position;

-- Удаляем старую таблицу
DROP TABLE position;

-- Переименовываем новую таблицу
ALTER TABLE position_new RENAME TO position;

-- Создаем индексы для оптимизации запросов по menu_id
CREATE INDEX IF NOT EXISTS idx_position_menu ON position(menu_id);
CREATE INDEX IF NOT EXISTS idx_position_menu_pos ON position(menu_id, position);

-- Проверяем результат миграции
SELECT 'Migration completed successfully' as status;
SELECT COUNT(*) as total_positions FROM position;
SELECT menu_id, COUNT(*) as positions_count FROM position GROUP BY menu_id;
