1378 lines
40 KiB
PL/PgSQL
1378 lines
40 KiB
PL/PgSQL
-- Downloaded from: https://github.com/kepinskw/db-jobportal/blob/6999ce3ca894c62abcd2cdf5d5a94618d26a7441/schema.sql
|
|
--
|
|
-- PostgreSQL database dump
|
|
--
|
|
|
|
-- Dumped from database version 14.13 (Ubuntu 14.13-1.pgdg22.04+1)
|
|
-- Dumped by pg_dump version 17.0 (Ubuntu 17.0-1.pgdg22.04+1)
|
|
|
|
SET statement_timeout = 0;
|
|
SET lock_timeout = 0;
|
|
SET idle_in_transaction_session_timeout = 0;
|
|
SET transaction_timeout = 0;
|
|
SET client_encoding = 'UTF8';
|
|
SET standard_conforming_strings = on;
|
|
SELECT pg_catalog.set_config('search_path', '', false);
|
|
SET check_function_bodies = false;
|
|
SET xmloption = content;
|
|
SET client_min_messages = warning;
|
|
SET row_security = off;
|
|
|
|
--
|
|
-- Name: pg_cron; Type: EXTENSION; Schema: -; Owner: -
|
|
--
|
|
|
|
CREATE EXTENSION IF NOT EXISTS pg_cron WITH SCHEMA pg_catalog;
|
|
|
|
|
|
--
|
|
-- Name: EXTENSION pg_cron; Type: COMMENT; Schema: -; Owner:
|
|
--
|
|
|
|
COMMENT ON EXTENSION pg_cron IS 'Job scheduler for PostgreSQL';
|
|
|
|
|
|
--
|
|
-- Name: public; Type: SCHEMA; Schema: -; Owner: postgres
|
|
--
|
|
|
|
-- *not* creating schema, since initdb creates it
|
|
|
|
|
|
ALTER SCHEMA public OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: add_new_application(integer, integer, character varying); Type: PROCEDURE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE PROCEDURE public.add_new_application(IN p_job_id integer, IN p_user_id integer, IN p_status character varying)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
new_app_id INT;
|
|
BEGIN
|
|
SELECT COALESCE(MAX(app_id), 0) + 1 INTO new_app_id FROM applications;
|
|
|
|
INSERT INTO applications (app_id, job_id, user_id, status)
|
|
VALUES (new_app_id, p_job_id, p_user_id, p_status);
|
|
|
|
RAISE NOTICE 'New application ID: % was added', new_app_id;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE public.add_new_application(IN p_job_id integer, IN p_user_id integer, IN p_status character varying) OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: add_new_employer(character varying, character varying); Type: PROCEDURE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE PROCEDURE public.add_new_employer(IN p_employername character varying, IN p_password character varying)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
new_employer_id INT;
|
|
BEGIN
|
|
SELECT COALESCE(MAX(employer_id), 0) + 1 INTO new_employer_id FROM employer;
|
|
|
|
INSERT INTO employer (employer_id, employername, password)
|
|
VALUES (new_employer_id, p_employername, p_password);
|
|
|
|
RAISE NOTICE 'New employer: % ID: % was added', p_employername, new_employer_id;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE public.add_new_employer(IN p_employername character varying, IN p_password character varying) OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: add_new_interview(integer, integer, timestamp without time zone, character varying); Type: PROCEDURE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE PROCEDURE public.add_new_interview(IN p_user_id integer, IN p_employer_id integer, IN p_timestamp timestamp without time zone, IN p_text character varying)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
new_interview_id INT;
|
|
BEGIN
|
|
SELECT COALESCE(MAX(interview_id), 0) + 1 INTO new_interview_id FROM interviewscheduler;
|
|
|
|
INSERT INTO interviewscheduler (interview_id, user_id, employer_id, timestamp, text)
|
|
VALUES (new_interview_id, p_user_id, p_employer_id, p_timestamp, p_text);
|
|
|
|
RAISE NOTICE 'New interview ID: % was added', new_interview_id;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE public.add_new_interview(IN p_user_id integer, IN p_employer_id integer, IN p_timestamp timestamp without time zone, IN p_text character varying) OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: add_new_job_offer(integer, character varying, character varying, character varying, real, real); Type: PROCEDURE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE PROCEDURE public.add_new_job_offer(IN p_employer_id integer, IN p_title character varying, IN p_description character varying, IN p_location character varying, IN p_salaryfrom real, IN p_salaryupto real)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
new_job_id INT;
|
|
BEGIN
|
|
SELECT COALESCE(MAX(job_id), 0) + 1 INTO new_job_id FROM joboffers;
|
|
|
|
INSERT INTO joboffers (job_id, employer_id, title, description, location, salary_from, salary_upto)
|
|
VALUES (new_job_id, p_employer_id, p_title, p_description, p_location, p_salaryfrom, p_salaryupto);
|
|
|
|
RAISE NOTICE 'New joboffer ID: % was added', new_job_id;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE public.add_new_job_offer(IN p_employer_id integer, IN p_title character varying, IN p_description character varying, IN p_location character varying, IN p_salaryfrom real, IN p_salaryupto real) OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: add_new_message(integer, integer, character varying); Type: PROCEDURE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE PROCEDURE public.add_new_message(IN p_sender_id integer, IN p_receiver_id integer, IN p_text character varying)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
new_message_id INT;
|
|
BEGIN
|
|
SELECT COALESCE(MAX(message_id), 0) + 1 INTO new_message_id FROM messages;
|
|
|
|
INSERT INTO messages (message_id, sender_id, receiver_id, text, timestamp)
|
|
VALUES (new_message_id, p_sender_id, p_receiver_id, p_text, CURRENT_TIMESTAMP);
|
|
|
|
RAISE NOTICE 'New message ID: % was added', new_message_id;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE public.add_new_message(IN p_sender_id integer, IN p_receiver_id integer, IN p_text character varying) OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: add_new_portfolio(integer, character varying, character varying); Type: PROCEDURE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE PROCEDURE public.add_new_portfolio(IN p_user_id integer, IN p_text character varying, IN p_website character varying)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
new_portfolio_id INT;
|
|
BEGIN
|
|
SELECT COALESCE(MAX(portfolio_id), 0) + 1 INTO new_portfolio_id FROM portfolio;
|
|
|
|
INSERT INTO portfolio (portfolio_id, user_id, text, website)
|
|
VALUES (new_portfolio_id, p_user_id, p_text, p_website);
|
|
|
|
RAISE NOTICE 'New portfolio ID: % was added', new_portfolio_id;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE public.add_new_portfolio(IN p_user_id integer, IN p_text character varying, IN p_website character varying) OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: add_new_profile(integer, character varying, character varying); Type: PROCEDURE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE PROCEDURE public.add_new_profile(IN p_user_id integer, IN p_headline character varying, IN p_summary character varying)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
new_profile_id INT;
|
|
BEGIN
|
|
SELECT COALESCE(MAX(profile_id), 0) + 1 INTO new_profile_id FROM profile;
|
|
|
|
INSERT INTO profile (profile_id, user_id, headline, summary)
|
|
VALUES (new_profile_id, p_user_id, p_headline, p_summary);
|
|
|
|
RAISE NOTICE 'New profile ID: % was added', new_profile_id;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE public.add_new_profile(IN p_user_id integer, IN p_headline character varying, IN p_summary character varying) OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: add_new_user(character varying, character varying); Type: PROCEDURE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE PROCEDURE public.add_new_user(IN p_username character varying, IN p_password character varying)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
new_user_id INT;
|
|
BEGIN
|
|
SELECT COALESCE(MAX(user_id), 0) + 1 INTO new_user_id FROM users;
|
|
|
|
INSERT INTO users (user_id, username, password)
|
|
VALUES (new_user_id, p_username, p_password);
|
|
|
|
RAISE NOTICE 'New user: % ID: % was added', p_username, new_user_id;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE public.add_new_user(IN p_username character varying, IN p_password character varying) OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: apply_for_job(integer, integer, character varying); Type: PROCEDURE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE PROCEDURE public.apply_for_job(IN p_user_id integer, IN p_job_id integer, IN p_message character varying)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
v_employer_id INT;
|
|
v_job_title VARCHAR(100);
|
|
v_app_id INT;
|
|
v_message_id INT;
|
|
BEGIN
|
|
-- Sprawdzenie, czy użytkownik istnieje
|
|
IF NOT EXISTS (SELECT 1 FROM users WHERE user_id = p_user_id) THEN
|
|
RAISE EXCEPTION 'User with ID % does not exist', p_user_id;
|
|
END IF;
|
|
-- Sprawdzenie, czy oferta pracy istnieje i pobranie informacji o niej
|
|
SELECT employer_id, title INTO v_employer_id, v_job_title
|
|
FROM joboffers
|
|
WHERE job_id = p_job_id;
|
|
IF NOT FOUND THEN
|
|
RAISE EXCEPTION 'Job offer with ID % does not exist', p_job_id;
|
|
END IF;
|
|
-- Sprawdzenie, czy użytkownik już nie aplikował na tę ofertę
|
|
IF EXISTS (SELECT 1 FROM applications WHERE user_id = p_user_id AND job_id = p_job_id) THEN
|
|
RAISE EXCEPTION 'User has already applied for this job';
|
|
END IF;
|
|
-- Dodanie nowej aplikacji
|
|
SELECT COALESCE(MAX(app_id),0) + 1 INTO v_app_id FROM applications;
|
|
INSERT INTO applications (app_id, job_id, user_id, status)
|
|
VALUES (v_app_id, p_job_id, p_user_id, 'pending');
|
|
-- Wysłanie wiadomości
|
|
SELECT COALESCE(MAX(message_id),0) + 1 INTO v_message_id FROM messages;
|
|
INSERT INTO messages (message_id, sender_id, receiver_id, text, timestamp)
|
|
VALUES (v_message_id, p_user_id, v_employer_id, p_message, CURRENT_TIMESTAMP);
|
|
-- Jeśli wszystko się powiodło, zatwierdzamy transakcję
|
|
RAISE NOTICE 'Application submitted successfully. Application ID: %, Message ID: %', v_app_id, v_message_id;
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
-- W przypadku błędu, cofamy transakcję i zgłaszamy wyjątek
|
|
ROLLBACK;
|
|
RAISE EXCEPTION 'Error applying for job: %', SQLERRM;
|
|
COMMIT;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE public.apply_for_job(IN p_user_id integer, IN p_job_id integer, IN p_message character varying) OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: avg_salary_by_location(character varying); Type: FUNCTION; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE FUNCTION public.avg_salary_by_location(p_location character varying) RETURNS real
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
v_average_salary float4;
|
|
BEGIN
|
|
SELECT
|
|
ROUND(AVG((salary_from + salary_upto) / 2)::numeric, 2)
|
|
INTO v_average_salary
|
|
FROM joboffers
|
|
WHERE location = p_location
|
|
AND salary_from IS NOT NULL
|
|
AND salary_upto IS NOT NULL;
|
|
|
|
-- Jeśli nie znaleziono ofert, zwracamy 0
|
|
RETURN COALESCE(v_average_salary, 0);
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION public.avg_salary_by_location(p_location character varying) OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: decline_other_applications(); Type: FUNCTION; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE FUNCTION public.decline_other_applications() RETURNS trigger
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
other_app RECORD;
|
|
employer_id_val INT4;
|
|
BEGIN
|
|
IF NEW.status = 'hired' THEN
|
|
SELECT employer_id INTO employer_id_val
|
|
FROM joboffers
|
|
WHERE job_id = NEW.job_id;
|
|
|
|
FOR other_app IN
|
|
SELECT app_id, user_id
|
|
FROM applications
|
|
WHERE job_id = NEW.job_id
|
|
AND app_id != NEW.app_id
|
|
AND status NOT IN ('declined', 'hired','rejected')
|
|
LOOP
|
|
UPDATE applications
|
|
SET status = 'declined'
|
|
WHERE app_id = other_app.app_id;
|
|
|
|
CALL public.add_new_message(
|
|
employer_id_val,
|
|
other_app.user_id,
|
|
'Thank you for your interest in our company. We regret to inform you that we have chosen another candidate for this position.'
|
|
);
|
|
END LOOP;
|
|
END IF;
|
|
|
|
RETURN NEW;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION public.decline_other_applications() OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: send_daily_interview_reminders(); Type: FUNCTION; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE FUNCTION public.send_daily_interview_reminders() RETURNS void
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
interview_record RECORD;
|
|
BEGIN
|
|
-- Wszystkie interview dnia
|
|
FOR interview_record IN
|
|
SELECT
|
|
i.interview_id,
|
|
i.user_id,
|
|
i.employer_id,
|
|
i.timestamp as interview_time,
|
|
j.title as job_title,
|
|
e.employername
|
|
FROM interviewscheduler i
|
|
JOIN joboffers j ON i.employer_id = j.employer_id
|
|
JOIN employer e ON i.employer_id = e.employer_id
|
|
WHERE DATE(i.timestamp) = CURRENT_DATE
|
|
AND i.timestamp > CURRENT_TIMESTAMP
|
|
-- Sprawdzenie czy nie było już powiadomienia
|
|
AND NOT EXISTS (
|
|
SELECT 1
|
|
FROM messages m
|
|
WHERE m.receiver_id = i.user_id
|
|
AND m.sender_id = i.employer_id
|
|
AND DATE(m.timestamp) = CURRENT_DATE
|
|
AND m.text LIKE 'You have a meeting%'
|
|
)
|
|
ORDER BY i.timestamp ASC
|
|
LOOP
|
|
|
|
INSERT INTO messages (
|
|
sender_id,
|
|
receiver_id,
|
|
text,
|
|
timestamp
|
|
) VALUES (
|
|
interview_record.employer_id,
|
|
interview_record.user_id,
|
|
FORMAT(
|
|
'You have a meeting for %s with %s at %s',
|
|
interview_record.job_title,
|
|
interview_record.employername,
|
|
interview_record.interview_time
|
|
),
|
|
CURRENT_TIMESTAMP
|
|
);
|
|
|
|
END LOOP;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION public.send_daily_interview_reminders() OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: update_application_status(integer, character varying); Type: PROCEDURE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE PROCEDURE public.update_application_status(IN p_app_id integer, IN p_status character varying)
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
valid_statuses VARCHAR(25)[] := ARRAY['pending', 'under_review', 'interviewing', 'hired', 'declined', 'rejected'];
|
|
current_status VARCHAR(25);
|
|
BEGIN
|
|
IF NOT EXISTS (SELECT 1 FROM applications WHERE app_id = p_app_id) THEN
|
|
RAISE EXCEPTION 'Application with ID % does not exist', p_app_id;
|
|
END IF;
|
|
|
|
SELECT status INTO current_status
|
|
FROM applications
|
|
WHERE app_id = p_app_id;
|
|
|
|
IF NOT p_status = ANY(valid_statuses) THEN
|
|
RAISE EXCEPTION 'Invalid status: %. Valid statuses are: %', p_status, array_to_string(valid_statuses, ', ');
|
|
END IF;
|
|
|
|
IF current_status IN ('hired', 'declined','rejected') THEN
|
|
RAISE EXCEPTION 'Cannot update status: Application is already % and finalized', current_status;
|
|
END IF;
|
|
|
|
UPDATE applications
|
|
SET status = p_status
|
|
WHERE app_id = p_app_id;
|
|
|
|
RAISE NOTICE 'Application % status updated from % to %', p_app_id, current_status, p_status;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER PROCEDURE public.update_application_status(IN p_app_id integer, IN p_status character varying) OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: update_user_status_on_hire(); Type: FUNCTION; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE FUNCTION public.update_user_status_on_hire() RETURNS trigger
|
|
LANGUAGE plpgsql
|
|
AS $$
|
|
DECLARE
|
|
v_employer_id INT4;
|
|
v_job_title VARCHAR(100);
|
|
v_status_id INT4;
|
|
BEGIN
|
|
|
|
SELECT j.employer_id, j.title INTO v_employer_id, v_job_title
|
|
FROM joboffers j
|
|
WHERE j.job_id = NEW.job_id;
|
|
|
|
SELECT COALESCE(MAX(status_id), 0) + 1 INTO v_status_id FROM status;
|
|
|
|
IF NEW.status = 'hired' THEN
|
|
INSERT INTO status (
|
|
status_id,
|
|
user_id,
|
|
employer_id,
|
|
position,
|
|
date_from
|
|
) VALUES (
|
|
v_status_id,
|
|
NEW.user_id,
|
|
v_employer_id,
|
|
v_job_title,
|
|
CURRENT_TIMESTAMP
|
|
);
|
|
|
|
RAISE NOTICE 'New status record_id % created for user_id % with employer_id % and position %',
|
|
v_status_id,NEW.user_id, v_employer_id, v_job_title;
|
|
END IF;
|
|
|
|
RETURN NEW;
|
|
END;
|
|
$$;
|
|
|
|
|
|
ALTER FUNCTION public.update_user_status_on_hire() OWNER TO postgres;
|
|
|
|
SET default_tablespace = '';
|
|
|
|
SET default_table_access_method = heap;
|
|
|
|
--
|
|
-- Name: applications; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.applications (
|
|
app_id integer NOT NULL,
|
|
job_id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
status character varying(25) NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.applications OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: education; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.education (
|
|
education_id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
school_name character varying(200) NOT NULL,
|
|
field_of_study character varying(150),
|
|
degree_level character varying(50),
|
|
start_date date NOT NULL,
|
|
end_date date,
|
|
is_current boolean DEFAULT false,
|
|
grade character varying(20),
|
|
location character varying(100)
|
|
);
|
|
|
|
|
|
ALTER TABLE public.education OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: employer; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.employer (
|
|
employer_id integer NOT NULL,
|
|
employername character varying(100) NOT NULL,
|
|
password character varying(255) NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.employer OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: joboffers; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.joboffers (
|
|
job_id integer NOT NULL,
|
|
employer_id integer NOT NULL,
|
|
title character varying(100) NOT NULL,
|
|
description character varying(1000) NOT NULL,
|
|
location character varying(100) NOT NULL,
|
|
salary_from real NOT NULL,
|
|
salary_upto real NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.joboffers OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: employer_applicant_stats_view; Type: VIEW; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE VIEW public.employer_applicant_stats_view AS
|
|
SELECT j.job_id,
|
|
j.title AS job_title,
|
|
count(a.app_id) AS total_applications,
|
|
sum(
|
|
CASE
|
|
WHEN ((a.status)::text = 'rejected'::text) THEN 1
|
|
ELSE 0
|
|
END) AS rejected_applications,
|
|
sum(
|
|
CASE
|
|
WHEN ((a.status)::text = 'accepted'::text) THEN 1
|
|
ELSE 0
|
|
END) AS accepted_applications,
|
|
sum(
|
|
CASE
|
|
WHEN ((a.status)::text = 'pending'::text) THEN 1
|
|
ELSE 0
|
|
END) AS pending_applications
|
|
FROM (public.joboffers j
|
|
LEFT JOIN public.applications a ON ((j.job_id = a.job_id)))
|
|
GROUP BY j.job_id, j.title;
|
|
|
|
|
|
ALTER VIEW public.employer_applicant_stats_view OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: profile; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.profile (
|
|
profile_id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
headline character varying(100) NOT NULL,
|
|
summary character varying(2000) NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.profile OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: users; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.users (
|
|
user_id integer NOT NULL,
|
|
username character varying(50) NOT NULL,
|
|
password character varying(255) NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.users OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: employer_applications_view; Type: VIEW; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE VIEW public.employer_applications_view AS
|
|
SELECT a.app_id,
|
|
a.job_id,
|
|
a.status,
|
|
u.username,
|
|
p.headline,
|
|
j.title AS job_title
|
|
FROM (((public.applications a
|
|
JOIN public.users u ON ((a.user_id = u.user_id)))
|
|
JOIN public.profile p ON ((u.user_id = p.user_id)))
|
|
JOIN public.joboffers j ON ((a.job_id = j.job_id)));
|
|
|
|
|
|
ALTER VIEW public.employer_applications_view OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: event_registrations; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.event_registrations (
|
|
registration_id integer NOT NULL,
|
|
event_id integer,
|
|
user_id integer,
|
|
registration_date timestamp without time zone,
|
|
status character varying(50),
|
|
notes character varying(500),
|
|
attendance_confirmed boolean
|
|
);
|
|
|
|
|
|
ALTER TABLE public.event_registrations OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: interviewscheduler; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.interviewscheduler (
|
|
interview_id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
employer_id integer NOT NULL,
|
|
"timestamp" timestamp without time zone NOT NULL,
|
|
text character varying(500)
|
|
);
|
|
|
|
|
|
ALTER TABLE public.interviewscheduler OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: job_events; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.job_events (
|
|
event_id integer NOT NULL,
|
|
title character varying(200) NOT NULL,
|
|
description text,
|
|
event_date date NOT NULL,
|
|
start_time time without time zone,
|
|
end_time time without time zone,
|
|
location character varying(200),
|
|
event_type character varying(50)
|
|
);
|
|
|
|
|
|
ALTER TABLE public.job_events OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: jobseeker_job_offers_view; Type: VIEW; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE VIEW public.jobseeker_job_offers_view AS
|
|
SELECT j.job_id,
|
|
j.title,
|
|
j.description,
|
|
j.location,
|
|
j.salary_from,
|
|
j.salary_upto,
|
|
count(a.app_id) AS application_count
|
|
FROM (public.joboffers j
|
|
LEFT JOIN public.applications a ON ((j.job_id = a.job_id)))
|
|
GROUP BY j.job_id, j.title, j.description, j.location, j.salary_from, j.salary_upto;
|
|
|
|
|
|
ALTER VIEW public.jobseeker_job_offers_view OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: portfolio; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.portfolio (
|
|
portfolio_id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
text character varying(2500) NOT NULL,
|
|
website character varying(255)
|
|
);
|
|
|
|
|
|
ALTER TABLE public.portfolio OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: jobseeker_profile_view; Type: VIEW; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE VIEW public.jobseeker_profile_view AS
|
|
SELECT u.user_id,
|
|
u.username,
|
|
p.headline,
|
|
p.summary,
|
|
po.website
|
|
FROM ((public.users u
|
|
LEFT JOIN public.profile p ON ((u.user_id = p.user_id)))
|
|
LEFT JOIN public.portfolio po ON ((u.user_id = po.user_id)));
|
|
|
|
|
|
ALTER VIEW public.jobseeker_profile_view OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: messages; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.messages (
|
|
message_id integer NOT NULL,
|
|
sender_id integer NOT NULL,
|
|
receiver_id integer NOT NULL,
|
|
text character varying(1000) NOT NULL,
|
|
"timestamp" timestamp without time zone NOT NULL
|
|
);
|
|
|
|
|
|
ALTER TABLE public.messages OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: recruiter_job_offers_view; Type: VIEW; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE VIEW public.recruiter_job_offers_view AS
|
|
SELECT count(a.app_id) AS application_count,
|
|
j.job_id,
|
|
j.title,
|
|
j.description,
|
|
j.location,
|
|
j.salary_from,
|
|
j.salary_upto,
|
|
e.employername AS employer_name
|
|
FROM ((public.joboffers j
|
|
JOIN public.employer e ON ((j.employer_id = e.employer_id)))
|
|
LEFT JOIN public.applications a ON ((j.job_id = a.job_id)))
|
|
GROUP BY j.job_id, j.title, j.description, j.location, j.salary_from, j.salary_upto, e.employername
|
|
ORDER BY (count(a.app_id)) DESC;
|
|
|
|
|
|
ALTER VIEW public.recruiter_job_offers_view OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: recruiter_user_view; Type: VIEW; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE VIEW public.recruiter_user_view AS
|
|
SELECT u.username,
|
|
p.headline,
|
|
p.summary
|
|
FROM (public.users u
|
|
LEFT JOIN public.profile p ON ((u.user_id = p.user_id)));
|
|
|
|
|
|
ALTER VIEW public.recruiter_user_view OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: status; Type: TABLE; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TABLE public.status (
|
|
status_id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
employer_id integer NOT NULL,
|
|
"position" character varying(100) NOT NULL,
|
|
date_from date NOT NULL,
|
|
date_to date
|
|
);
|
|
|
|
|
|
ALTER TABLE public.status OWNER TO postgres;
|
|
|
|
--
|
|
-- Name: applications app_id; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.applications
|
|
ADD CONSTRAINT app_id PRIMARY KEY (app_id);
|
|
|
|
|
|
--
|
|
-- Name: education education_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.education
|
|
ADD CONSTRAINT education_pkey PRIMARY KEY (education_id);
|
|
|
|
|
|
--
|
|
-- Name: employer employer_id; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.employer
|
|
ADD CONSTRAINT employer_id PRIMARY KEY (employer_id);
|
|
|
|
|
|
--
|
|
-- Name: employer employername; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.employer
|
|
ADD CONSTRAINT employername UNIQUE (employername);
|
|
|
|
|
|
--
|
|
-- Name: event_registrations event_registrations_pk; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.event_registrations
|
|
ADD CONSTRAINT event_registrations_pk PRIMARY KEY (registration_id);
|
|
|
|
|
|
--
|
|
-- Name: interviewscheduler interview_id; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.interviewscheduler
|
|
ADD CONSTRAINT interview_id PRIMARY KEY (interview_id);
|
|
|
|
|
|
--
|
|
-- Name: job_events job_events_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.job_events
|
|
ADD CONSTRAINT job_events_pkey PRIMARY KEY (event_id);
|
|
|
|
|
|
--
|
|
-- Name: joboffers job_id; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.joboffers
|
|
ADD CONSTRAINT job_id PRIMARY KEY (job_id);
|
|
|
|
|
|
--
|
|
-- Name: messages message_id; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.messages
|
|
ADD CONSTRAINT message_id PRIMARY KEY (message_id);
|
|
|
|
|
|
--
|
|
-- Name: portfolio portfolio_id; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.portfolio
|
|
ADD CONSTRAINT portfolio_id PRIMARY KEY (portfolio_id);
|
|
|
|
|
|
--
|
|
-- Name: profile profile_id; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.profile
|
|
ADD CONSTRAINT profile_id PRIMARY KEY (profile_id);
|
|
|
|
|
|
--
|
|
-- Name: status status_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.status
|
|
ADD CONSTRAINT status_pkey PRIMARY KEY (status_id);
|
|
|
|
|
|
--
|
|
-- Name: event_registrations unique_event_user; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.event_registrations
|
|
ADD CONSTRAINT unique_event_user UNIQUE (event_id, user_id);
|
|
|
|
|
|
--
|
|
-- Name: profile user_id; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.profile
|
|
ADD CONSTRAINT user_id UNIQUE (user_id);
|
|
|
|
|
|
--
|
|
-- Name: users username; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.users
|
|
ADD CONSTRAINT username UNIQUE (username);
|
|
|
|
|
|
--
|
|
-- Name: users users_id; Type: CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.users
|
|
ADD CONSTRAINT users_id PRIMARY KEY (user_id);
|
|
|
|
|
|
--
|
|
-- Name: idx_applications_job_id; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_applications_job_id ON public.applications USING btree (job_id);
|
|
|
|
|
|
--
|
|
-- Name: idx_applications_status; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_applications_status ON public.applications USING btree (status);
|
|
|
|
|
|
--
|
|
-- Name: idx_applications_user_id; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_applications_user_id ON public.applications USING btree (user_id);
|
|
|
|
|
|
--
|
|
-- Name: idx_education_user_id; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_education_user_id ON public.education USING btree (user_id);
|
|
|
|
|
|
--
|
|
-- Name: idx_event_registrations_event_id; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_event_registrations_event_id ON public.event_registrations USING btree (event_id);
|
|
|
|
|
|
--
|
|
-- Name: idx_event_registrations_status; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_event_registrations_status ON public.event_registrations USING btree (status);
|
|
|
|
|
|
--
|
|
-- Name: idx_event_registrations_user_id; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_event_registrations_user_id ON public.event_registrations USING btree (user_id);
|
|
|
|
|
|
--
|
|
-- Name: idx_interview_date; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_interview_date ON public.interviewscheduler USING btree ("timestamp");
|
|
|
|
|
|
--
|
|
-- Name: idx_interviewscheduler_timestamp; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_interviewscheduler_timestamp ON public.interviewscheduler USING btree ("timestamp");
|
|
|
|
|
|
--
|
|
-- Name: idx_job_events_date; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_job_events_date ON public.job_events USING btree (event_date);
|
|
|
|
|
|
--
|
|
-- Name: idx_job_events_type; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_job_events_type ON public.job_events USING btree (event_type);
|
|
|
|
|
|
--
|
|
-- Name: idx_joboffers_employer_id; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_joboffers_employer_id ON public.joboffers USING btree (employer_id);
|
|
|
|
|
|
--
|
|
-- Name: idx_joboffers_location_title; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_joboffers_location_title ON public.joboffers USING btree (location, title);
|
|
|
|
|
|
--
|
|
-- Name: idx_joboffers_salary; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_joboffers_salary ON public.joboffers USING btree (salary_from, salary_upto);
|
|
|
|
|
|
--
|
|
-- Name: idx_messages_conversation; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_messages_conversation ON public.messages USING btree (sender_id, receiver_id);
|
|
|
|
|
|
--
|
|
-- Name: idx_messages_sender_receiver; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_messages_sender_receiver ON public.messages USING btree (sender_id, receiver_id, "timestamp");
|
|
|
|
|
|
--
|
|
-- Name: idx_messages_time; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_messages_time ON public.messages USING btree ("timestamp");
|
|
|
|
|
|
--
|
|
-- Name: idx_status_datefrom_to; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_status_datefrom_to ON public.status USING btree (date_from, date_to);
|
|
|
|
|
|
--
|
|
-- Name: idx_status_employer_id; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_status_employer_id ON public.status USING btree (employer_id);
|
|
|
|
|
|
--
|
|
-- Name: idx_status_user_id; Type: INDEX; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE INDEX idx_status_user_id ON public.status USING btree (user_id);
|
|
|
|
|
|
--
|
|
-- Name: applications decline_others_on_hire; Type: TRIGGER; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TRIGGER decline_others_on_hire AFTER UPDATE OF status ON public.applications FOR EACH ROW WHEN ((((old.status)::text <> 'hired'::text) AND ((new.status)::text = 'hired'::text))) EXECUTE FUNCTION public.decline_other_applications();
|
|
|
|
|
|
--
|
|
-- Name: applications user_hired_trigger; Type: TRIGGER; Schema: public; Owner: postgres
|
|
--
|
|
|
|
CREATE TRIGGER user_hired_trigger AFTER UPDATE ON public.applications FOR EACH ROW WHEN ((((old.status)::text <> 'hired'::text) AND ((new.status)::text = 'hired'::text))) EXECUTE FUNCTION public.update_user_status_on_hire();
|
|
|
|
|
|
--
|
|
-- Name: applications applications_joboffers_fk; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.applications
|
|
ADD CONSTRAINT applications_joboffers_fk FOREIGN KEY (job_id) REFERENCES public.joboffers(job_id);
|
|
|
|
|
|
--
|
|
-- Name: applications applications_users_fk; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.applications
|
|
ADD CONSTRAINT applications_users_fk FOREIGN KEY (user_id) REFERENCES public.users(user_id);
|
|
|
|
|
|
--
|
|
-- Name: education education_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.education
|
|
ADD CONSTRAINT education_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(user_id);
|
|
|
|
|
|
--
|
|
-- Name: event_registrations event_registrations_job_events_fk; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.event_registrations
|
|
ADD CONSTRAINT event_registrations_job_events_fk FOREIGN KEY (event_id) REFERENCES public.job_events(event_id);
|
|
|
|
|
|
--
|
|
-- Name: event_registrations event_registrations_users_fk; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.event_registrations
|
|
ADD CONSTRAINT event_registrations_users_fk FOREIGN KEY (user_id) REFERENCES public.users(user_id);
|
|
|
|
|
|
--
|
|
-- Name: interviewscheduler interviewscheduler_employer_fk; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.interviewscheduler
|
|
ADD CONSTRAINT interviewscheduler_employer_fk FOREIGN KEY (employer_id) REFERENCES public.employer(employer_id);
|
|
|
|
|
|
--
|
|
-- Name: interviewscheduler interviewscheduler_users_fk; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.interviewscheduler
|
|
ADD CONSTRAINT interviewscheduler_users_fk FOREIGN KEY (user_id) REFERENCES public.users(user_id);
|
|
|
|
|
|
--
|
|
-- Name: joboffers joboffers_employer_fk; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.joboffers
|
|
ADD CONSTRAINT joboffers_employer_fk FOREIGN KEY (employer_id) REFERENCES public.employer(employer_id);
|
|
|
|
|
|
--
|
|
-- Name: messages messages_users_fk; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.messages
|
|
ADD CONSTRAINT messages_users_fk FOREIGN KEY (sender_id) REFERENCES public.users(user_id);
|
|
|
|
|
|
--
|
|
-- Name: messages messages_users_fk_1; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.messages
|
|
ADD CONSTRAINT messages_users_fk_1 FOREIGN KEY (receiver_id) REFERENCES public.users(user_id);
|
|
|
|
|
|
--
|
|
-- Name: portfolio portfolio_users_fk; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.portfolio
|
|
ADD CONSTRAINT portfolio_users_fk FOREIGN KEY (user_id) REFERENCES public.users(user_id);
|
|
|
|
|
|
--
|
|
-- Name: profile profile_users_fk; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.profile
|
|
ADD CONSTRAINT profile_users_fk FOREIGN KEY (user_id) REFERENCES public.users(user_id);
|
|
|
|
|
|
--
|
|
-- Name: status status_employer_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.status
|
|
ADD CONSTRAINT status_employer_id_fkey FOREIGN KEY (employer_id) REFERENCES public.employer(employer_id);
|
|
|
|
|
|
--
|
|
-- Name: status status_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: postgres
|
|
--
|
|
|
|
ALTER TABLE ONLY public.status
|
|
ADD CONSTRAINT status_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(user_id);
|
|
|
|
|
|
--
|
|
-- Name: SCHEMA public; Type: ACL; Schema: -; Owner: postgres
|
|
--
|
|
|
|
REVOKE USAGE ON SCHEMA public FROM PUBLIC;
|
|
GRANT ALL ON SCHEMA public TO PUBLIC;
|
|
|
|
|
|
--
|
|
-- Name: PROCEDURE add_new_application(IN p_job_id integer, IN p_user_id integer, IN p_status character varying); Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT ALL ON PROCEDURE public.add_new_application(IN p_job_id integer, IN p_user_id integer, IN p_status character varying) TO recruiter;
|
|
GRANT ALL ON PROCEDURE public.add_new_application(IN p_job_id integer, IN p_user_id integer, IN p_status character varying) TO job_seeker;
|
|
|
|
|
|
--
|
|
-- Name: PROCEDURE add_new_employer(IN p_employername character varying, IN p_password character varying); Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT ALL ON PROCEDURE public.add_new_employer(IN p_employername character varying, IN p_password character varying) TO employer;
|
|
|
|
|
|
--
|
|
-- Name: PROCEDURE add_new_interview(IN p_user_id integer, IN p_employer_id integer, IN p_timestamp timestamp without time zone, IN p_text character varying); Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT ALL ON PROCEDURE public.add_new_interview(IN p_user_id integer, IN p_employer_id integer, IN p_timestamp timestamp without time zone, IN p_text character varying) TO recruiter;
|
|
GRANT ALL ON PROCEDURE public.add_new_interview(IN p_user_id integer, IN p_employer_id integer, IN p_timestamp timestamp without time zone, IN p_text character varying) TO employer;
|
|
|
|
|
|
--
|
|
-- Name: PROCEDURE add_new_job_offer(IN p_employer_id integer, IN p_title character varying, IN p_description character varying, IN p_location character varying, IN p_salaryfrom real, IN p_salaryupto real); Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT ALL ON PROCEDURE public.add_new_job_offer(IN p_employer_id integer, IN p_title character varying, IN p_description character varying, IN p_location character varying, IN p_salaryfrom real, IN p_salaryupto real) TO employer;
|
|
GRANT ALL ON PROCEDURE public.add_new_job_offer(IN p_employer_id integer, IN p_title character varying, IN p_description character varying, IN p_location character varying, IN p_salaryfrom real, IN p_salaryupto real) TO recruiter;
|
|
|
|
|
|
--
|
|
-- Name: PROCEDURE add_new_message(IN p_sender_id integer, IN p_receiver_id integer, IN p_text character varying); Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT ALL ON PROCEDURE public.add_new_message(IN p_sender_id integer, IN p_receiver_id integer, IN p_text character varying) TO recruiter;
|
|
GRANT ALL ON PROCEDURE public.add_new_message(IN p_sender_id integer, IN p_receiver_id integer, IN p_text character varying) TO job_seeker;
|
|
GRANT ALL ON PROCEDURE public.add_new_message(IN p_sender_id integer, IN p_receiver_id integer, IN p_text character varying) TO employer;
|
|
|
|
|
|
--
|
|
-- Name: PROCEDURE add_new_portfolio(IN p_user_id integer, IN p_text character varying, IN p_website character varying); Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT ALL ON PROCEDURE public.add_new_portfolio(IN p_user_id integer, IN p_text character varying, IN p_website character varying) TO job_seeker;
|
|
|
|
|
|
--
|
|
-- Name: PROCEDURE add_new_profile(IN p_user_id integer, IN p_headline character varying, IN p_summary character varying); Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT ALL ON PROCEDURE public.add_new_profile(IN p_user_id integer, IN p_headline character varying, IN p_summary character varying) TO job_seeker;
|
|
|
|
|
|
--
|
|
-- Name: PROCEDURE add_new_user(IN p_username character varying, IN p_password character varying); Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT ALL ON PROCEDURE public.add_new_user(IN p_username character varying, IN p_password character varying) TO job_seeker;
|
|
|
|
|
|
--
|
|
-- Name: PROCEDURE apply_for_job(IN p_user_id integer, IN p_job_id integer, IN p_message character varying); Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT ALL ON PROCEDURE public.apply_for_job(IN p_user_id integer, IN p_job_id integer, IN p_message character varying) TO job_seeker;
|
|
|
|
|
|
--
|
|
-- Name: FUNCTION avg_salary_by_location(p_location character varying); Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT ALL ON FUNCTION public.avg_salary_by_location(p_location character varying) TO employer;
|
|
GRANT ALL ON FUNCTION public.avg_salary_by_location(p_location character varying) TO recruiter;
|
|
GRANT ALL ON FUNCTION public.avg_salary_by_location(p_location character varying) TO job_seeker;
|
|
|
|
|
|
--
|
|
-- Name: FUNCTION decline_other_applications(); Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT ALL ON FUNCTION public.decline_other_applications() TO employer;
|
|
GRANT ALL ON FUNCTION public.decline_other_applications() TO recruiter;
|
|
|
|
|
|
--
|
|
-- Name: PROCEDURE update_application_status(IN p_app_id integer, IN p_status character varying); Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT ALL ON PROCEDURE public.update_application_status(IN p_app_id integer, IN p_status character varying) TO employer;
|
|
GRANT ALL ON PROCEDURE public.update_application_status(IN p_app_id integer, IN p_status character varying) TO recruiter;
|
|
|
|
|
|
--
|
|
-- Name: FUNCTION update_user_status_on_hire(); Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT ALL ON FUNCTION public.update_user_status_on_hire() TO employer;
|
|
GRANT ALL ON FUNCTION public.update_user_status_on_hire() TO recruiter;
|
|
|
|
|
|
--
|
|
-- Name: TABLE applications; Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT SELECT,INSERT ON TABLE public.applications TO job_seeker;
|
|
GRANT SELECT ON TABLE public.applications TO employer;
|
|
GRANT SELECT,INSERT,UPDATE ON TABLE public.applications TO recruiter;
|
|
|
|
|
|
--
|
|
-- Name: TABLE employer; Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT SELECT,UPDATE ON TABLE public.employer TO employer;
|
|
GRANT SELECT ON TABLE public.employer TO recruiter;
|
|
|
|
|
|
--
|
|
-- Name: TABLE joboffers; Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT SELECT ON TABLE public.joboffers TO job_seeker;
|
|
GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.joboffers TO employer;
|
|
GRANT SELECT,INSERT,UPDATE ON TABLE public.joboffers TO recruiter;
|
|
|
|
|
|
--
|
|
-- Name: TABLE employer_applicant_stats_view; Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT SELECT ON TABLE public.employer_applicant_stats_view TO employer;
|
|
|
|
|
|
--
|
|
-- Name: TABLE profile; Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT SELECT,INSERT,REFERENCES,DELETE,TRIGGER,TRUNCATE,UPDATE ON TABLE public.profile TO job_seeker;
|
|
GRANT SELECT ON TABLE public.profile TO employer;
|
|
|
|
|
|
--
|
|
-- Name: TABLE users; Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT SELECT,UPDATE ON TABLE public.users TO job_seeker;
|
|
GRANT SELECT ON TABLE public.users TO employer;
|
|
GRANT SELECT ON TABLE public.users TO recruiter;
|
|
|
|
|
|
--
|
|
-- Name: TABLE interviewscheduler; Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE public.interviewscheduler TO employer;
|
|
|
|
|
|
--
|
|
-- Name: TABLE portfolio; Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT SELECT,UPDATE ON TABLE public.portfolio TO job_seeker;
|
|
GRANT SELECT ON TABLE public.portfolio TO employer;
|
|
|
|
|
|
--
|
|
-- Name: TABLE jobseeker_profile_view; Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT SELECT ON TABLE public.jobseeker_profile_view TO job_seeker;
|
|
|
|
|
|
--
|
|
-- Name: TABLE recruiter_user_view; Type: ACL; Schema: public; Owner: postgres
|
|
--
|
|
|
|
GRANT SELECT ON TABLE public.recruiter_user_view TO recruiter;
|
|
|
|
|
|
--
|
|
-- PostgreSQL database dump complete
|
|
--
|
|
|