61 lines
2.9 KiB
SQL
61 lines
2.9 KiB
SQL
-- Complete company profile (replacing the minimal stub)
|
|
ALTER TABLE company_profiles
|
|
ADD COLUMN IF NOT EXISTS business_type VARCHAR(100),
|
|
ADD COLUMN IF NOT EXISTS gst_number VARCHAR(50),
|
|
ADD COLUMN IF NOT EXISTS contact_name VARCHAR(255),
|
|
ADD COLUMN IF NOT EXISTS contact_email VARCHAR(255),
|
|
ADD COLUMN IF NOT EXISTS contact_phone VARCHAR(20),
|
|
ADD COLUMN IF NOT EXISTS address_line1 VARCHAR(500),
|
|
ADD COLUMN IF NOT EXISTS city VARCHAR(100),
|
|
ADD COLUMN IF NOT EXISTS state VARCHAR(100),
|
|
ADD COLUMN IF NOT EXISTS country VARCHAR(100) NOT NULL DEFAULT 'India',
|
|
ADD COLUMN IF NOT EXISTS postal_code VARCHAR(20),
|
|
ADD COLUMN IF NOT EXISTS status VARCHAR(50) NOT NULL DEFAULT 'ACTIVE',
|
|
ADD COLUMN IF NOT EXISTS free_job_slots INTEGER NOT NULL DEFAULT 1,
|
|
ADD COLUMN IF NOT EXISTS purchased_job_slots INTEGER NOT NULL DEFAULT 0,
|
|
ADD COLUMN IF NOT EXISTS free_contact_views INTEGER NOT NULL DEFAULT 30,
|
|
ADD COLUMN IF NOT EXISTS purchased_contact_views INTEGER NOT NULL DEFAULT 0;
|
|
|
|
-- Jobs
|
|
CREATE TABLE IF NOT EXISTS jobs (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
company_id UUID NOT NULL REFERENCES company_profiles(id) ON DELETE CASCADE,
|
|
title VARCHAR(200) NOT NULL,
|
|
category VARCHAR(100),
|
|
description TEXT NOT NULL,
|
|
location VARCHAR(255) NOT NULL,
|
|
job_type VARCHAR(50) NOT NULL DEFAULT 'FULL_TIME', -- FULL_TIME, PART_TIME, CONTRACT
|
|
salary_min INTEGER, -- in paise
|
|
salary_max INTEGER, -- in paise
|
|
experience_years INTEGER,
|
|
skills TEXT[] DEFAULT '{}',
|
|
status VARCHAR(50) NOT NULL DEFAULT 'DRAFT',
|
|
-- DRAFT, PENDING_APPROVAL, LIVE, EXPIRED, CLOSED, REJECTED
|
|
rejection_reason TEXT,
|
|
expires_at TIMESTAMPTZ,
|
|
approved_at TIMESTAMPTZ,
|
|
approved_by UUID REFERENCES users(id),
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
-- Applications (Job Seeker → Job)
|
|
CREATE TABLE IF NOT EXISTS applications (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
job_id UUID NOT NULL REFERENCES jobs(id) ON DELETE CASCADE,
|
|
job_seeker_id UUID NOT NULL REFERENCES job_seeker_profiles(id) ON DELETE CASCADE,
|
|
cover_letter TEXT,
|
|
resume_url VARCHAR(500),
|
|
status VARCHAR(50) NOT NULL DEFAULT 'APPLIED',
|
|
-- APPLIED, SHORTLISTED, INTERVIEW, OFFERED, HIRED, REJECTED, WITHDRAWN
|
|
applied_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
contact_viewed BOOLEAN NOT NULL DEFAULT false,
|
|
UNIQUE(job_id, job_seeker_id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_jobs_company_id ON jobs(company_id);
|
|
CREATE INDEX IF NOT EXISTS idx_jobs_status ON jobs(status);
|
|
CREATE INDEX IF NOT EXISTS idx_applications_job_id ON applications(job_id);
|
|
CREATE INDEX IF NOT EXISTS idx_applications_job_seeker_id ON applications(job_seeker_id);
|
|
CREATE INDEX IF NOT EXISTS idx_applications_status ON applications(status);
|