- Video Interview system (backend + frontend) - Date Posted filter (24h, 7d, 30d) - Company filter in jobs listing - Recent searches persistence (LocalStorage) - Job Alerts with email confirmation - Favorite jobs with API - Company followers system - Careerjet URL compatibility (s/l aliases)
41 lines
1.5 KiB
SQL
41 lines
1.5 KiB
SQL
-- Migration: Create job_alerts table
|
|
-- Description: Table for job search alerts sent to candidates via email
|
|
|
|
CREATE TABLE IF NOT EXISTS job_alerts (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
|
|
|
|
-- Alert configuration
|
|
search_query VARCHAR(255),
|
|
location VARCHAR(255),
|
|
employment_type VARCHAR(50),
|
|
work_mode VARCHAR(50),
|
|
salary_min DECIMAL(12,2),
|
|
salary_max DECIMAL(12,2),
|
|
currency VARCHAR(3) DEFAULT 'BRL',
|
|
|
|
-- Alert metadata
|
|
frequency VARCHAR(20) NOT NULL DEFAULT 'daily', -- daily, weekly
|
|
is_active BOOLEAN NOT NULL DEFAULT true,
|
|
last_sent_at TIMESTAMP WITH TIME ZONE,
|
|
next_send_at TIMESTAMP WITH TIME ZONE,
|
|
|
|
-- Confirmation
|
|
confirmation_token VARCHAR(255),
|
|
confirmed_at TIMESTAMP WITH TIME ZONE,
|
|
|
|
-- Metadata
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
-- Indexes
|
|
CREATE INDEX IF NOT EXISTS idx_job_alerts_user_id ON job_alerts(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_job_alerts_is_active ON job_alerts(is_active);
|
|
CREATE INDEX IF NOT EXISTS idx_job_alerts_next_send_at ON job_alerts(next_send_at);
|
|
|
|
-- Comments
|
|
COMMENT ON TABLE job_alerts IS 'Job search alerts for candidates';
|
|
COMMENT ON COLUMN job_alerts.user_id IS 'User who created the alert (NULL for guest alerts)';
|
|
COMMENT ON COLUMN job_alerts.frequency IS 'How often to send alerts: daily, weekly';
|
|
COMMENT ON COLUMN job_alerts.confirmation_token IS 'Token for email confirmation';
|