feat(phase-0,phase-2): bootstrap DB schemas + Metabase/NocoDB compose + work_types seed
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
-- 002_core_employee.sql — core.office, core.department, core.employee, history
|
||||
|
||||
CREATE TABLE core.office (
|
||||
id bigserial PRIMARY KEY,
|
||||
name text NOT NULL,
|
||||
bitra_id text UNIQUE
|
||||
);
|
||||
|
||||
CREATE TABLE core.department (
|
||||
id bigserial PRIMARY KEY,
|
||||
name text NOT NULL,
|
||||
bitra_id text UNIQUE,
|
||||
bitrix_id bigint UNIQUE,
|
||||
parent_id bigint REFERENCES core.department,
|
||||
source text NOT NULL DEFAULT 'bitra' -- bitra | bitrix
|
||||
);
|
||||
|
||||
CREATE TABLE core.employee (
|
||||
id bigserial PRIMARY KEY,
|
||||
email text UNIQUE NOT NULL,
|
||||
full_name text,
|
||||
first_name text,
|
||||
last_name text,
|
||||
bitra_user_id text UNIQUE,
|
||||
eva_person_id text UNIQUE,
|
||||
bitrix_user_id bigint UNIQUE,
|
||||
rate decimal(10,2),
|
||||
office_id bigint REFERENCES core.office,
|
||||
department_id bigint REFERENCES core.department,
|
||||
is_active boolean DEFAULT true,
|
||||
is_target_for_mvp1 boolean DEFAULT false,
|
||||
last_synced timestamptz
|
||||
);
|
||||
|
||||
CREATE INDEX idx_employee_email ON core.employee (lower(email));
|
||||
CREATE INDEX idx_employee_bitra_id ON core.employee (bitra_user_id);
|
||||
CREATE INDEX idx_employee_eva_id ON core.employee (eva_person_id);
|
||||
CREATE INDEX idx_employee_bitrix_id ON core.employee (bitrix_user_id);
|
||||
CREATE INDEX idx_employee_target_mvp1 ON core.employee (is_target_for_mvp1) WHERE is_target_for_mvp1 = true;
|
||||
|
||||
CREATE TABLE core.department_history (
|
||||
employee_id bigint REFERENCES core.employee,
|
||||
valid_from date NOT NULL,
|
||||
valid_to date,
|
||||
department_id bigint REFERENCES core.department,
|
||||
source text NOT NULL DEFAULT 'bitra',
|
||||
PRIMARY KEY (employee_id, valid_from)
|
||||
);
|
||||
Reference in New Issue
Block a user