-- Миграция для добавления полей image_url и расширения настроек сайта

-- Добавление поля image_url в таблицу routes (если его нет)
DO $$
BEGIN
    IF NOT EXISTS (SELECT 1 FROM information_schema.columns 
                   WHERE table_name = 'routes' AND column_name = 'image_url') THEN
        ALTER TABLE routes ADD COLUMN image_url VARCHAR(255);
    END IF;
END $$;

-- Добавление поля category в таблицу site_settings (если его нет)
DO $$
BEGIN
    IF NOT EXISTS (SELECT 1 FROM information_schema.columns 
                   WHERE table_name = 'site_settings' AND column_name = 'category') THEN
        ALTER TABLE site_settings ADD COLUMN category VARCHAR(50) DEFAULT 'general';
    END IF;
END $$;

-- Обновление типов в таблице site_settings
DO $$
BEGIN
    -- Удаляем старое ограничение типов если оно есть
    ALTER TABLE site_settings DROP CONSTRAINT IF EXISTS site_settings_setting_type_check;
    
    -- Добавляем новое ограничение с расширенными типами
    ALTER TABLE site_settings ADD CONSTRAINT site_settings_setting_type_check 
        CHECK (setting_type IN ('text', 'number', 'boolean', 'json', 'color', 'file'));
END $$;

-- Добавление расширенных настроек сайта для редактора стилей
INSERT INTO site_settings (setting_key, setting_value, setting_type, description, category, updated_at) VALUES
-- Основные цвета темы
('primary_color', '#2563eb', 'color', 'Основной цвет сайта', 'colors', NOW()),
('secondary_color', '#dc2626', 'color', 'Вторичный цвет сайта', 'colors', NOW()),
('accent_color', '#059669', 'color', 'Акцентный цвет', 'colors', NOW()),
('text_color', '#334155', 'color', 'Основной цвет текста', 'colors', NOW()),
('background_color', '#ffffff', 'color', 'Цвет фона', 'colors', NOW()),
('card_background', '#f8fafc', 'color', 'Цвет фона карточек', 'colors', NOW()),

-- Фоновые изображения
('hero_background_url', '/images/korea-hero.jpg', 'file', 'Фоновое изображение главной страницы', 'images', NOW()),
('default_tour_image', '/images/placeholder.jpg', 'file', 'Изображение тура по умолчанию', 'images', NOW()),
('site_logo_url', '/images/korea-logo.png', 'file', 'Логотип сайта', 'images', NOW()),
('favicon_url', '/images/favicon.ico', 'file', 'Иконка сайта', 'images', NOW()),

-- Типографика
('font_family_primary', 'Noto Sans KR, Malgun Gothic, 맑은 고딕, sans-serif', 'text', 'Основной шрифт', 'typography', NOW()),
('font_family_display', 'Playfair Display, serif', 'text', 'Декоративный шрифт', 'typography', NOW()),
('font_size_base', '16', 'number', 'Базовый размер шрифта (px)', 'typography', NOW()),
('line_height_base', '1.7', 'number', 'Базовая высота строки', 'typography', NOW()),

-- Эффекты и наложения
('hero_overlay_opacity', '0.8', 'number', 'Прозрачность наложения на hero фоне (0-1)', 'effects', NOW()),
('hero_overlay_color', '#2563eb', 'color', 'Цвет наложения на hero фоне', 'effects', NOW()),
('card_shadow', '0 4px 6px -1px rgba(0, 0, 0, 0.1)', 'text', 'Тень карточек (CSS shadow)', 'effects', NOW()),
('border_radius', '8', 'number', 'Радиус скругления углов (px)', 'effects', NOW()),
('blur_effect', '10', 'number', 'Сила размытия эффектов (px)', 'effects', NOW()),

-- Макет и размеры
('hero_height_desktop', '70', 'number', 'Высота hero секции на десктопе (vh)', 'layout', NOW()),
('hero_height_mobile', '50', 'number', 'Высота hero секции на мобильных (vh)', 'layout', NOW()),
('compact_hero_height', '25', 'number', 'Высота компактных hero секций (vh)', 'layout', NOW()),
('container_max_width', '1200', 'number', 'Максимальная ширина контейнера (px)', 'layout', NOW()),
('navbar_height', '76', 'number', 'Высота навигационной панели (px)', 'layout', NOW()),

-- Дополнительные стили
('custom_css', '', 'text', 'Дополнительный CSS код', 'theme', NOW()),
('google_fonts_url', '', 'text', 'URL для подключения Google Fonts', 'typography', NOW()),
('animation_duration', '0.3', 'number', 'Длительность анимаций (секунды)', 'effects', NOW())

ON CONFLICT (setting_key) DO UPDATE SET
    setting_value = EXCLUDED.setting_value,
    setting_type = EXCLUDED.setting_type,
    description = EXCLUDED.description,
    category = EXCLUDED.category,
    updated_at = NOW();