From 183eca884e5010233b9472d63c0809182d7af486 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 13 Jun 2018 08:03:19 +0300 Subject: [PATCH 1/3] Add `contacts.uuid` and `domains.uuid` uniq constraints --- ...ontacts_and_domains_uuid_uniq_constraint.rb | 15 +++++++++++++++ db/structure.sql | 18 ++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 db/migrate/20180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb diff --git a/db/migrate/20180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb b/db/migrate/20180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb new file mode 100644 index 000000000..99e9b823d --- /dev/null +++ b/db/migrate/20180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb @@ -0,0 +1,15 @@ +class AddContactsAndDomainsUuidUniqConstraint < ActiveRecord::Migration + def up + execute <<-SQL + ALTER TABLE contacts ADD CONSTRAINT uniq_contact_uuid UNIQUE (uuid); + ALTER TABLE domains ADD CONSTRAINT uniq_domain_uuid UNIQUE (uuid); + SQL + end + + def down + execute <<-SQL + ALTER TABLE contacts DROP CONSTRAINT uniq_contact_uuid; + ALTER TABLE domains DROP CONSTRAINT uniq_domain_uuid; + SQL + end +end diff --git a/db/structure.sql b/db/structure.sql index 9b53ad323..b491b6f5a 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -3258,6 +3258,22 @@ ALTER TABLE ONLY settings ADD CONSTRAINT settings_pkey PRIMARY KEY (id); +-- +-- Name: uniq_contact_uuid; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY contacts + ADD CONSTRAINT uniq_contact_uuid UNIQUE (uuid); + + +-- +-- Name: uniq_domain_uuid; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY domains + ADD CONSTRAINT uniq_domain_uuid UNIQUE (uuid); + + -- -- Name: unique_code; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: -- @@ -4740,3 +4756,5 @@ INSERT INTO schema_migrations (version) VALUES ('20180612042953'); INSERT INTO schema_migrations (version) VALUES ('20180613030330'); +INSERT INTO schema_migrations (version) VALUES ('20180613045614'); + From fc3c70c5ee14e2b92b4c5b5237a35d2be3779904 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 13 Jun 2018 08:08:14 +0300 Subject: [PATCH 2/3] Add clarifying comment --- ...180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/db/migrate/20180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb b/db/migrate/20180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb index 99e9b823d..32b8fb090 100644 --- a/db/migrate/20180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb +++ b/db/migrate/20180613045614_add_contacts_and_domains_uuid_uniq_constraint.rb @@ -1,3 +1,4 @@ +# Unique constraint is needed to prevent accidental duplicate values in fixtures to appear in DB class AddContactsAndDomainsUuidUniqConstraint < ActiveRecord::Migration def up execute <<-SQL From bf53ca5947774c9558d13d070bf493b9cf0d9c22 Mon Sep 17 00:00:00 2001 From: Artur Beljajev Date: Wed, 13 Jun 2018 10:35:18 +0300 Subject: [PATCH 3/3] Nullify contact's uuid when transferring It will be generated on DB level --- app/models/concerns/contact/transferable.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/concerns/contact/transferable.rb b/app/models/concerns/contact/transferable.rb index 14c1cac3c..3f151251a 100644 --- a/app/models/concerns/contact/transferable.rb +++ b/app/models/concerns/contact/transferable.rb @@ -16,6 +16,7 @@ module Concerns::Contact::Transferable new_contact.regenerate_code new_contact.regenerate_auth_info new_contact.remove_address unless self.class.address_processing? + new_contact.uuid = nil new_contact.save(validate: false) new_contact end