29 lines
No EOL
1 KiB
PL/PgSQL
29 lines
No EOL
1 KiB
PL/PgSQL
CREATE TABLE IF NOT EXISTS job_descriptions (
|
|
id SERIAL PRIMARY KEY,
|
|
job_id BIGINT NOT NULL,
|
|
description TEXT NOT NULL,
|
|
job_criteria JSONB DEFAULT '{}'::jsonb,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (job_id) REFERENCES jobs(id) ON DELETE CASCADE
|
|
);
|
|
|
|
-- Create an index on job_id for faster lookups
|
|
CREATE INDEX idx_job_descriptions_job_id ON job_descriptions(job_id);
|
|
|
|
-- Create a GIN index on the job_criteria JSONB field for faster searching within the JSON data
|
|
CREATE INDEX idx_job_descriptions_criteria ON job_descriptions USING GIN (job_criteria);
|
|
|
|
-- Add trigger to update updated_at timestamp
|
|
CREATE OR REPLACE FUNCTION update_job_descriptions_updated_at()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.updated_at = CURRENT_TIMESTAMP;
|
|
RETURN NEW;
|
|
END;
|
|
$$ language 'plpgsql';
|
|
|
|
CREATE TRIGGER trigger_update_job_descriptions_timestamp
|
|
BEFORE UPDATE ON job_descriptions
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION update_job_descriptions_updated_at(); |