52 lines
2.7 KiB
SQL
Executable File
52 lines
2.7 KiB
SQL
Executable File
-- Миграция для создания таблицы событий кандидатов
|
||
-- Выполните этот скрипт для обновления существующей базы данных
|
||
|
||
-- Создание типа 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);
|