Working default hours update

This commit is contained in:
2025-10-14 22:09:49 +01:00
parent 8b3d08ce84
commit 29aaa7392e
7 changed files with 1128 additions and 551 deletions
+37 -15
View File
@@ -195,8 +195,7 @@ CREATE TABLE booking_services (
-- DEFAULT WORKING HOURS TABLE
-- =======================================
CREATE TABLE working_hours (
id SERIAL PRIMARY KEY,
weekday SMALLINT NOT NULL, -- 0 = Sunday, 6 = Saturday
weekday SMALLINT PRIMARY KEY, -- 0 = Monday, 6 = Sunday
start_time TIME NOT NULL, -- e.g. 09:00
end_time TIME NOT NULL, -- e.g. 17:00
is_open BOOLEAN NOT NULL DEFAULT TRUE
@@ -204,24 +203,47 @@ CREATE TABLE working_hours (
CREATE INDEX idx_working_hours_weekday ON working_hours(weekday);
-- =======================================
-- EXCEPTIONAL WORKING HOURS TABLE
-- =======================================
CREATE TABLE exceptional_working_hours (
id SERIAL PRIMARY KEY,
weekday SMALLINT NOT NULL, -- 0 = Sunday, 6 = Saturday
start_time TIME NOT NULL, -- e.g. 09:00
end_time TIME NOT NULL, -- e.g. 17:00
is_open BOOLEAN NOT NULL DEFAULT TRUE,
group_id INT NOT NULL REFERENCES exceptional_working_hours_groups(id) ON DELETE CASCADE,
);
INSERT INTO working_hours VALUES (0, '00:00:00', '00:00:00', FALSE);
INSERT INTO working_hours VALUES (1, '09:00:00', '17:00:00', TRUE);
INSERT INTO working_hours VALUES (2, '09:00:00', '17:00:00', TRUE);
INSERT INTO working_hours VALUES (3, '12:00:00', '20:00:00', TRUE);
INSERT INTO working_hours VALUES (4, '09:00:00', '17:00:00', TRUE);
INSERT INTO working_hours VALUES (5, '09:00:00', '17:00:00', TRUE);
INSERT INTO working_hours VALUES (6, '00:00:00', '00:00:00', FALSE);
-- =======================================
-- EXCEPTIONAL WORKING HOURS
-- =======================================
-- Exceptional working hours groups (template)
CREATE TABLE exceptional_working_hours_groups (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL, -- e.g. "Christmas"
description TEXT NOT NULL -- e.g. "Extended hours for holiday period"
name TEXT NOT NULL, -- e.g. "Christmas Schedule"
description TEXT NOT NULL -- e.g. "Extended hours for holiday period"
);
-- Exceptional working hours (7 entries per group, one per weekday)
CREATE TABLE exceptional_working_hours (
id SERIAL PRIMARY KEY,
group_id INT NOT NULL REFERENCES exceptional_working_hours_groups(id) ON DELETE CASCADE,
weekday SMALLINT NOT NULL, -- 0 = Monday ... 6 = Sunday
start_time TIME NOT NULL,
end_time TIME NOT NULL,
is_open BOOLEAN NOT NULL DEFAULT TRUE
);
CREATE UNIQUE INDEX idx_group_weekday ON exceptional_working_hours(group_id, weekday);
-- Exceptional group applications (assign a group to a specific week)
CREATE TABLE exceptional_group_applications (
id SERIAL PRIMARY KEY,
group_id INT NOT NULL REFERENCES exceptional_working_hours_groups(id) ON DELETE CASCADE,
week_start DATE NOT NULL -- Monday of the week this group applies to
);
CREATE UNIQUE INDEX idx_group_application_week ON exceptional_group_applications(week_start);
-- =======================================
-- PAYMENTS TABLE
-- =======================================