-- Миграция для создания таблицы событий кандидатов
-- Выполните этот скрипт для обновления существующей базы данных

-- Создание типа candidate_event_type
DO $$ 
BEGIN
    IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'candidate_event_type') THEN
        CREATE TYPE candidate_event_type AS ENUM (
            'call',              -- Созвон
            'interview_1',       -- Первое собеседование
            'interview_2',       -- Второе собеседование
            'interview_3',      -- Третье собеседование
            'test_task',         -- Тестовое задание
            'offer',             -- Оффер
            'offer_accepted',    -- Оффер принят
            'offer_rejected',    -- Оффер отклонен
            'probation_start',   -- Начало испытательного срока
            'hired',             -- Трудоустроен
            'rejected',          -- Отклонен
            'other'              -- Другое
        );
    END IF;
END$$;

-- Создание типа candidate_event_result
DO $$ 
BEGIN
    IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'candidate_event_result') THEN
        CREATE TYPE candidate_event_result AS ENUM ('success', 'failed', 'pending', 'cancelled');
    END IF;
END$$;

-- Создание таблицы событий кандидата
CREATE TABLE IF NOT EXISTS candidate_events (
  id                VARCHAR(50) PRIMARY KEY,
  candidate_id      VARCHAR(50) NOT NULL REFERENCES candidates(id) ON DELETE CASCADE,
  event_type        candidate_event_type NOT NULL,
  event_date        TIMESTAMPTZ NOT NULL,
  notes             TEXT, -- Заметки о событии
  result            candidate_event_result DEFAULT 'pending', -- Результат события
  interviewer       TEXT, -- Кто проводил (для собеседований)
  location          TEXT, -- Место проведения (офис, онлайн и т.д.)
  duration_minutes  INTEGER, -- Длительность в минутах
  created_at        TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  updated_at        TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

-- Создание индексов
CREATE INDEX IF NOT EXISTS idx_candidate_events_candidate ON candidate_events(candidate_id);
CREATE INDEX IF NOT EXISTS idx_candidate_events_type ON candidate_events(event_type);
CREATE INDEX IF NOT EXISTS idx_candidate_events_date ON candidate_events(event_date DESC);
