chore: heygermany customer project
This commit is contained in:
99
db/postgres/0003-candidate.sql
Normal file
99
db/postgres/0003-candidate.sql
Normal file
@@ -0,0 +1,99 @@
|
||||
-- Create enums for states (using German names), countries (using ISO codes for i18n), and language levels
|
||||
CREATE TYPE app.german_state AS ENUM (
|
||||
'Baden-Württemberg',
|
||||
'Bayern',
|
||||
'Berlin',
|
||||
'Brandenburg',
|
||||
'Bremen',
|
||||
'Hamburg',
|
||||
'Hessen',
|
||||
'Mecklenburg-Vorpommern',
|
||||
'Niedersachsen',
|
||||
'Nordrhein-Westfalen',
|
||||
'Rheinland-Pfalz',
|
||||
'Saarland',
|
||||
'Sachsen',
|
||||
'Sachsen-Anhalt',
|
||||
'Schleswig-Holstein',
|
||||
'Thüringen'
|
||||
);
|
||||
|
||||
CREATE TYPE app.education_country AS ENUM (
|
||||
'AL', -- Albania
|
||||
'BA', -- Bosnia and Herzegovina
|
||||
'IN', -- India
|
||||
'MX', -- Mexico
|
||||
'PH', -- Philippines
|
||||
'SY', -- Syria
|
||||
'TN', -- Tunisia
|
||||
'TR', -- Turkey
|
||||
'UA', -- Ukraine
|
||||
'VN' -- Vietnam
|
||||
);
|
||||
|
||||
CREATE TYPE app.language_level AS ENUM (
|
||||
'A_ONE',
|
||||
'A_TWO',
|
||||
'B_ONE',
|
||||
'B_TWO',
|
||||
'C_ONE',
|
||||
'C_TWO'
|
||||
);
|
||||
|
||||
CREATE TYPE app.candidate_document_type AS ENUM (
|
||||
'education',
|
||||
'transcript',
|
||||
'license',
|
||||
'language',
|
||||
'work_experience'
|
||||
);
|
||||
|
||||
CREATE TABLE app.candidate (
|
||||
candidate_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
|
||||
email VARCHAR NOT NULL,
|
||||
name VARCHAR NOT NULL,
|
||||
|
||||
-- Basic info
|
||||
state_work_preference app.german_state[],
|
||||
open_to_work BOOLEAN,
|
||||
living_in_germany BOOLEAN,
|
||||
eu_passport BOOLEAN,
|
||||
country_education app.education_country,
|
||||
|
||||
-- License info
|
||||
license_provided BOOLEAN,
|
||||
|
||||
-- Language info
|
||||
language_certificate_provided BOOLEAN,
|
||||
language_self_assessment_level app.language_level,
|
||||
|
||||
submitted_at TIMESTAMPTZ,
|
||||
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
last_updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE app.candidate_document (
|
||||
document_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
candidate_id UUID NOT NULL REFERENCES app.candidate,
|
||||
category app.candidate_document_type NOT NULL,
|
||||
title VARCHAR,
|
||||
note VARCHAR,
|
||||
file_path VARCHAR NOT NULL,
|
||||
file_name VARCHAR NOT NULL,
|
||||
file_size INTEGER,
|
||||
mime_type VARCHAR,
|
||||
uploaded BOOLEAN DEFAULT FALSE,
|
||||
|
||||
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
last_updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Add triggers for timestamp updates
|
||||
CREATE TRIGGER update_candidate_timestamp
|
||||
BEFORE UPDATE ON app.candidate
|
||||
FOR EACH ROW EXECUTE PROCEDURE app.update_lastupdated_timestamp();
|
||||
|
||||
CREATE TRIGGER update_candidate_document_timestamp
|
||||
BEFORE UPDATE ON app.candidate_document
|
||||
FOR EACH ROW EXECUTE PROCEDURE app.update_lastupdated_timestamp();
|
||||
Reference in New Issue
Block a user