Skip to content

Commit cd09f90

Browse files
committed
Merge schema upgrade files for v0.2.0
This gives a single file that can be applied during the upgrade more easily, having it in individual files was mostly to avoid merge conflicts during development. The combined files were created with the following command: cat 0.2.0-external-uuid.sql <(echo) 0.2.0-source-rules.sql <(echo) 0.2.0-schedule-timezone.sql <(echo) 0.2.0-source-username.sql > 0.2.0.sql The order of files matches the order in which the PRs that added them were merged (though the order shouldn't really matter as there are no dependencies between the individual files): - #216 - #324 - #344 - #338
1 parent 6376947 commit cd09f90

File tree

10 files changed

+108
-102
lines changed

10 files changed

+108
-102
lines changed

schema/mysql/upgrades/0.2.0-external-uuid.sql

Lines changed: 0 additions & 15 deletions
This file was deleted.

schema/mysql/upgrades/0.2.0-schedule-timezone.sql

Lines changed: 0 additions & 12 deletions
This file was deleted.

schema/mysql/upgrades/0.2.0-source-rules.sql

Lines changed: 0 additions & 19 deletions
This file was deleted.

schema/mysql/upgrades/0.2.0-source-username.sql

Lines changed: 0 additions & 5 deletions
This file was deleted.

schema/mysql/upgrades/0.2.0.sql

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
ALTER TABLE contact ADD COLUMN external_uuid char(36) AFTER id;
2+
ALTER TABLE contactgroup ADD COLUMN external_uuid char(36) AFTER id;
3+
ALTER TABLE channel ADD COLUMN external_uuid char(36) AFTER id;
4+
5+
UPDATE contact SET external_uuid = UUID() WHERE external_uuid IS NULL;
6+
UPDATE contactgroup SET external_uuid = UUID() WHERE external_uuid IS NULL;
7+
UPDATE channel SET external_uuid = UUID() WHERE external_uuid IS NULL;
8+
9+
ALTER TABLE contact MODIFY COLUMN external_uuid char(36) NOT NULL;
10+
ALTER TABLE contactgroup MODIFY COLUMN external_uuid char(36) NOT NULL;
11+
ALTER TABLE channel MODIFY COLUMN external_uuid char(36) NOT NULL;
12+
13+
ALTER TABLE contact ADD CONSTRAINT uk_contact_external_uuid UNIQUE (external_uuid);
14+
ALTER TABLE contactgroup ADD CONSTRAINT uk_contactgroup_external_uuid UNIQUE (external_uuid);
15+
ALTER TABLE channel ADD CONSTRAINT uk_channel_external_uuid UNIQUE (external_uuid);
16+
17+
ALTER TABLE source
18+
DROP CONSTRAINT ck_source_icinga2_has_config,
19+
DROP CONSTRAINT ck_source_bcrypt_listener_password_hash;
20+
ALTER TABLE source
21+
DROP COLUMN icinga2_base_url,
22+
DROP COLUMN icinga2_auth_user,
23+
DROP COLUMN icinga2_auth_pass,
24+
DROP COLUMN icinga2_ca_pem,
25+
DROP COLUMN icinga2_common_name,
26+
DROP COLUMN icinga2_insecure_tls,
27+
ADD CONSTRAINT ck_source_bcrypt_listener_password_hash CHECK (
28+
listener_password_hash IS NULL OR listener_password_hash LIKE '$2_$%');
29+
30+
ALTER TABLE rule
31+
ADD COLUMN source_id bigint DEFAULT NULL AFTER timeperiod_id,
32+
ADD CONSTRAINT fk_rule_source FOREIGN KEY (source_id) REFERENCES source(id);
33+
34+
UPDATE rule SET source_id = (SELECT id FROM source WHERE type = 'icinga2');
35+
ALTER TABLE rule MODIFY COLUMN source_id bigint NOT NULL;
36+
37+
ALTER TABLE schedule ADD COLUMN timezone text AFTER name;
38+
UPDATE schedule SET timezone = (
39+
SELECT entry.timezone
40+
FROM timeperiod_entry entry
41+
INNER JOIN timeperiod ON timeperiod.id = entry.timeperiod_id
42+
INNER JOIN rotation ON rotation.id = timeperiod.owned_by_rotation_id
43+
WHERE rotation.schedule_id = schedule.id
44+
ORDER BY entry.id
45+
LIMIT 1
46+
);
47+
UPDATE schedule SET timezone = 'UTC' WHERE timezone IS NULL;
48+
ALTER TABLE schedule MODIFY COLUMN timezone text NOT NULL;
49+
50+
ALTER TABLE source ADD COLUMN listener_username varchar(255) AFTER name;
51+
UPDATE source SET listener_username = CONCAT('source-', source.id) WHERE deleted = 'n';
52+
ALTER TABLE source
53+
ADD CONSTRAINT uk_source_listener_username UNIQUE (listener_username),
54+
ADD CONSTRAINT ck_source_listener_username_or_deleted CHECK (deleted = 'y' OR listener_username IS NOT NULL);

schema/pgsql/upgrades/0.2.0-external-uuid.sql

Lines changed: 0 additions & 15 deletions
This file was deleted.

schema/pgsql/upgrades/0.2.0-schedule-timezone.sql

Lines changed: 0 additions & 12 deletions
This file was deleted.

schema/pgsql/upgrades/0.2.0-source-rules.sql

Lines changed: 0 additions & 19 deletions
This file was deleted.

schema/pgsql/upgrades/0.2.0-source-username.sql

Lines changed: 0 additions & 5 deletions
This file was deleted.

schema/pgsql/upgrades/0.2.0.sql

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
2+
3+
ALTER TABLE contact ADD COLUMN external_uuid uuid CONSTRAINT uk_contact_external_uuid UNIQUE;
4+
ALTER TABLE contactgroup ADD COLUMN external_uuid uuid CONSTRAINT uk_contactgroup_external_uuid UNIQUE;
5+
ALTER TABLE channel ADD COLUMN external_uuid uuid CONSTRAINT uk_channel_external_uuid UNIQUE;
6+
7+
UPDATE contact SET external_uuid = uuid_generate_v4() WHERE external_uuid IS NULL;
8+
UPDATE contactgroup SET external_uuid = uuid_generate_v4() WHERE external_uuid IS NULL;
9+
UPDATE channel SET external_uuid = uuid_generate_v4() WHERE external_uuid IS NULL;
10+
11+
ALTER TABLE contact ALTER COLUMN external_uuid SET NOT NULL;
12+
ALTER TABLE contactgroup ALTER COLUMN external_uuid SET NOT NULL;
13+
ALTER TABLE channel ALTER COLUMN external_uuid SET NOT NULL;
14+
15+
DROP EXTENSION "uuid-ossp";
16+
17+
ALTER TABLE source
18+
DROP CONSTRAINT ck_source_icinga2_has_config,
19+
DROP CONSTRAINT ck_source_bcrypt_listener_password_hash;
20+
ALTER TABLE source
21+
DROP COLUMN icinga2_base_url,
22+
DROP COLUMN icinga2_auth_user,
23+
DROP COLUMN icinga2_auth_pass,
24+
DROP COLUMN icinga2_ca_pem,
25+
DROP COLUMN icinga2_common_name,
26+
DROP COLUMN icinga2_insecure_tls,
27+
ADD CONSTRAINT ck_source_bcrypt_listener_password_hash CHECK (
28+
listener_password_hash IS NULL OR listener_password_hash LIKE '$2_$%');
29+
30+
ALTER TABLE rule
31+
ADD COLUMN source_id bigint DEFAULT NULL,
32+
ADD CONSTRAINT fk_rule_source FOREIGN KEY (source_id) REFERENCES source(id);
33+
34+
UPDATE rule SET source_id = (SELECT id FROM source WHERE type = 'icinga2');
35+
ALTER TABLE rule ALTER COLUMN source_id SET NOT NULL;
36+
37+
ALTER TABLE schedule ADD COLUMN timezone text;
38+
UPDATE schedule SET timezone = (
39+
SELECT entry.timezone
40+
FROM timeperiod_entry entry
41+
INNER JOIN timeperiod ON timeperiod.id = entry.timeperiod_id
42+
INNER JOIN rotation ON rotation.id = timeperiod.owned_by_rotation_id
43+
WHERE rotation.schedule_id = schedule.id
44+
ORDER BY entry.id
45+
LIMIT 1
46+
);
47+
UPDATE schedule SET timezone = 'UTC' WHERE timezone IS NULL;
48+
ALTER TABLE schedule ALTER COLUMN timezone SET NOT NULL;
49+
50+
ALTER TABLE source ADD COLUMN listener_username varchar(255);
51+
UPDATE source SET listener_username = CONCAT('source-', source.id) WHERE deleted = 'n';
52+
ALTER TABLE source
53+
ADD CONSTRAINT uk_source_listener_username UNIQUE (listener_username),
54+
ADD CONSTRAINT ck_source_listener_username_or_deleted CHECK (deleted = 'y' OR listener_username IS NOT NULL);

0 commit comments

Comments
 (0)