diff --git a/schema/mysql/schema.sql b/schema/mysql/schema.sql index e0ce1b37..5f6014dd 100644 --- a/schema/mysql/schema.sql +++ b/schema/mysql/schema.sql @@ -94,6 +94,7 @@ CREATE INDEX idx_contactgroup_member_changed_at ON contactgroup_member(changed_a CREATE TABLE schedule ( id bigint NOT NULL AUTO_INCREMENT, name text NOT NULL COLLATE utf8mb4_unicode_ci, + timezone text NOT NULL, -- e.g. 'Europe/Berlin' changed_at bigint NOT NULL, deleted enum('n', 'y') NOT NULL DEFAULT 'n', diff --git a/schema/mysql/upgrades/0.2.0-schedule-timezone.sql b/schema/mysql/upgrades/0.2.0-schedule-timezone.sql new file mode 100644 index 00000000..b1e6c3c1 --- /dev/null +++ b/schema/mysql/upgrades/0.2.0-schedule-timezone.sql @@ -0,0 +1,12 @@ +ALTER TABLE schedule ADD COLUMN timezone text AFTER name; +UPDATE schedule SET timezone = ( + SELECT entry.timezone + FROM timeperiod_entry entry + INNER JOIN timeperiod ON timeperiod.id = entry.timeperiod_id + INNER JOIN rotation ON rotation.id = timeperiod.owned_by_rotation_id + WHERE rotation.schedule_id = schedule.id + ORDER BY entry.id + LIMIT 1 +); +UPDATE schedule SET timezone = 'UTC' WHERE timezone IS NULL; +ALTER TABLE schedule MODIFY COLUMN timezone text NOT NULL; diff --git a/schema/pgsql/schema.sql b/schema/pgsql/schema.sql index 35381d3a..bfe063f2 100644 --- a/schema/pgsql/schema.sql +++ b/schema/pgsql/schema.sql @@ -127,6 +127,7 @@ CREATE INDEX idx_contactgroup_member_changed_at ON contactgroup_member(changed_a CREATE TABLE schedule ( id bigserial, name citext NOT NULL, + timezone text NOT NULL, -- e.g. 'Europe/Berlin' changed_at bigint NOT NULL, deleted boolenum NOT NULL DEFAULT 'n', diff --git a/schema/pgsql/upgrades/0.2.0-schedule-timezone.sql b/schema/pgsql/upgrades/0.2.0-schedule-timezone.sql new file mode 100644 index 00000000..7e41e81b --- /dev/null +++ b/schema/pgsql/upgrades/0.2.0-schedule-timezone.sql @@ -0,0 +1,12 @@ +ALTER TABLE schedule ADD COLUMN timezone text; +UPDATE schedule SET timezone = ( + SELECT entry.timezone + FROM timeperiod_entry entry + INNER JOIN timeperiod ON timeperiod.id = entry.timeperiod_id + INNER JOIN rotation ON rotation.id = timeperiod.owned_by_rotation_id + WHERE rotation.schedule_id = schedule.id + ORDER BY entry.id + LIMIT 1 +); +UPDATE schedule SET timezone = 'UTC' WHERE timezone IS NULL; +ALTER TABLE schedule ALTER COLUMN timezone SET NOT NULL;