-- Migration: Add color field to projects table
-- Date: 2026-02-02
--
-- This migration adds color field to projects table to allow
-- custom color selection for projects. The field is NOT NULL,
-- and existing projects will be assigned colors from a predefined palette.

-- Добавляем поле color
ALTER TABLE projects 
ADD COLUMN color VARCHAR(7) NOT NULL DEFAULT '#3B82F6';

-- Палитра из 30 контрастных цветов (синхронизирована с backend и frontend)
-- Заполняем существующие проекты цветами из палитры
DO $$
DECLARE
    colors TEXT[] := ARRAY[
        '#EF4444', '#F97316', '#F59E0B', '#EAB308', '#84CC16',
        '#22C55E', '#10B981', '#14B8A6', '#06B6D4', '#0EA5E9',
        '#3B82F6', '#6366F1', '#8B5CF6', '#A855F7', '#D946EF',
        '#EC4899', '#F43F5E', '#DC2626', '#EA580C', '#CA8A04',
        '#65A30D', '#16A34A', '#059669', '#0D9488', '#0891B2',
        '#0284C7', '#2563EB', '#4F46E5', '#7C3AED', '#9333EA'
    ];
    project_record RECORD;
    color_index INTEGER := 0;
BEGIN
    -- Обновляем существующие проекты, присваивая им цвета из палитры
    FOR project_record IN 
        SELECT id FROM projects ORDER BY id
    LOOP
        UPDATE projects 
        SET color = colors[1 + (color_index % array_length(colors, 1))]
        WHERE id = project_record.id;
        
        color_index := color_index + 1;
    END LOOP;
END $$;

-- Убираем DEFAULT, так как теперь все проекты имеют цвет
ALTER TABLE projects 
ALTER COLUMN color DROP DEFAULT;

CREATE INDEX IF NOT EXISTS idx_projects_color ON projects(color);

COMMENT ON COLUMN projects.color IS 'Project color in HEX format (e.g., #FF5733)';
