You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.8 KiB
80 lines
2.8 KiB
CREATE TABLE public.m_shift ( |
|
id SERIAL, |
|
label VARCHAR(128) NOT NULL, |
|
flex_time_minute INTEGER NOT NULL DEFAULT 30, |
|
start_time TIME WITH TIME ZONE NOT NULL, |
|
end_time TIME WITH TIME ZONE NOT NULL, |
|
is_non_shift BOOLEAN NOT NULL DEFAULT FALSE, |
|
created_at TIMESTAMP WITH TIME ZONE, |
|
created_by VARCHAR(128), |
|
updated_at TIMESTAMP WITH TIME ZONE, |
|
updated_by VARCHAR(128), |
|
UNIQUE(label), |
|
PRIMARY KEY(id) |
|
); |
|
|
|
ALTER TABLE public.m_users ADD PRIMARY KEY(id); |
|
ALTER TABLE public.m_proyek ADD PRIMARY KEY(id); |
|
ALTER TABLE public.m_company ADD PRIMARY KEY(id); |
|
|
|
-- TEMPORARY |
|
-- ALTER TABLE m_shift RENAME COLUMN is_default TO is_non_shift; |
|
|
|
CREATE TABLE public.t_users_monthly_shift ( |
|
id BIGSERIAL, |
|
company_id BIGINT, |
|
project_id BIGINT, |
|
start_at TIMESTAMP WITH TIME ZONE NOT NULL, |
|
end_at TIMESTAMP WITH TIME ZONE, |
|
user_id BIGINT NOT NULL, |
|
remarks VARCHAR(255), |
|
schedules JSON, |
|
created_at TIMESTAMP WITH TIME ZONE, |
|
created_by VARCHAR(128), |
|
updated_at TIMESTAMP WITH TIME ZONE, |
|
updated_by VARCHAR(128), |
|
FOREIGN KEY(project_id) REFERENCES m_proyek(id), |
|
FOREIGN KEY(user_id) REFERENCES m_users(id), |
|
FOREIGN KEY(company_id) REFERENCES m_company(id), |
|
PRIMARY KEY(id) |
|
); |
|
|
|
CREATE TABLE public.t_users_shift ( |
|
id BIGSERIAL, |
|
project_id BIGINT, |
|
user_id BIGINT NOT NULL, |
|
from_date TIMESTAMP WITH TIME ZONE NOT NULL, |
|
to_date TIMESTAMP WITH TIME ZONE, |
|
remarks VARCHAR(255), |
|
mon_shift_id INTEGER, |
|
tue_shift_id INTEGER, |
|
wed_shift_id INTEGER, |
|
thu_shift_id INTEGER, |
|
fri_shift_id INTEGER, |
|
sat_shift_id INTEGER, |
|
sun_shift_id INTEGER, |
|
created_at TIMESTAMP WITH TIME ZONE, |
|
created_by VARCHAR(128), |
|
updated_at TIMESTAMP WITH TIME ZONE, |
|
updated_by VARCHAR(128), |
|
FOREIGN KEY(project_id) REFERENCES m_proyek(id), |
|
FOREIGN KEY(user_id) REFERENCES m_users(id), |
|
FOREIGN KEY(mon_shift_id) REFERENCES m_shift(id), |
|
FOREIGN KEY(tue_shift_id) REFERENCES m_shift(id), |
|
FOREIGN KEY(wed_shift_id) REFERENCES m_shift(id), |
|
FOREIGN KEY(thu_shift_id) REFERENCES m_shift(id), |
|
FOREIGN KEY(fri_shift_id) REFERENCES m_shift(id), |
|
FOREIGN KEY(sat_shift_id) REFERENCES m_shift(id), |
|
FOREIGN KEY(sun_shift_id) REFERENCES m_shift(id), |
|
PRIMARY KEY(id) |
|
); |
|
|
|
--- SAMPLE DATA |
|
INSERT INTO m_shift(label,flex_time_minute, start_time, end_time, is_non_shift, created_at, created_by) |
|
VALUES('S0', 30, '07:30:00', '15:30:00', TRUE, CURRENT_TIMESTAMP, 'System'); |
|
|
|
INSERT INTO t_users_shift(user_id, from_date, |
|
mon_shift_id, tue_shift_id, wed_shift_id, thu_shift_id, fri_shift_id, sat_shift_id, sun_shift_id, |
|
created_at, created_by) |
|
VALUES(1, CURRENT_TIMESTAMP, |
|
1, 1, 1, 1, 1, NULL, NULL, CURRENT_TIMESTAMP, 'System'); |