gohorsejobs/backend/migrations/035_create_job_alerts.sql
GoHorse Deploy ae475e41a9 feat: implement careerjet gap analysis improvements
- 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)
2026-02-14 19:37:25 +00:00

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';