diff --git a/schema/pgsql/schema.sql b/schema/pgsql/schema.sql index 0c835aaaa..8e594e01c 100644 --- a/schema/pgsql/schema.sql +++ b/schema/pgsql/schema.sql @@ -55,9 +55,11 @@ CREATE TABLE contact ( username citext, -- reference to web user default_channel_id bigint NOT NULL REFERENCES channel(id), color varchar(7) NOT NULL, -- hex color codes e.g #000000 + external_uuid uuid NOT NULL, CONSTRAINT pk_contact PRIMARY KEY (id), - UNIQUE (username) + UNIQUE (username), + UNIQUE (external_uuid) ); CREATE TABLE contact_address ( @@ -74,8 +76,10 @@ CREATE TABLE contactgroup ( id bigserial, name citext NOT NULL, color varchar(7) NOT NULL, -- hex color codes e.g #000000 + external_uuid uuid NOT NULL, - CONSTRAINT pk_contactgroup PRIMARY KEY (id) + CONSTRAINT pk_contactgroup PRIMARY KEY (id), + UNIQUE (external_uuid) ); CREATE TABLE contactgroup_member ( diff --git a/schema/pgsql/upgrades/029.sql b/schema/pgsql/upgrades/029.sql new file mode 100644 index 000000000..14b362a39 --- /dev/null +++ b/schema/pgsql/upgrades/029.sql @@ -0,0 +1,16 @@ +CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; + +ALTER TABLE contact ADD COLUMN external_uuid uuid UNIQUE; +ALTER TABLE contactgroup ADD COLUMN external_uuid uuid UNIQUE; + +UPDATE contact SET external_uuid = uuid_generate_v4() WHERE external_uuid IS NULL; +UPDATE contactgroup SET external_uuid = uuid_generate_v4() WHERE external_uuid IS NULL; + +ALTER TABLE contact ALTER COLUMN external_uuid SET NOT NULL; +ALTER TABLE contactgroup ALTER COLUMN external_uuid SET NOT NULL; + +DROP EXTENSION "uuid-ossp"; + + +ALTER TABLE contact DROP COLUMN external_uuid; +ALTER TABLE contactgroup DROP COLUMN external_uuid; \ No newline at end of file