From b51c1e1d41de299713182c4017a55f3a163ad236 Mon Sep 17 00:00:00 2001 From: evazion Date: Thu, 6 Oct 2022 22:06:48 -0500 Subject: [PATCH] emails: add uniqueness constraints on email addresses. --- ...03080342_add_indexes_to_email_addresses.rb | 9 +++++ db/structure.sql | 38 ++++++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20221003080342_add_indexes_to_email_addresses.rb diff --git a/db/migrate/20221003080342_add_indexes_to_email_addresses.rb b/db/migrate/20221003080342_add_indexes_to_email_addresses.rb new file mode 100644 index 000000000..e2316ed33 --- /dev/null +++ b/db/migrate/20221003080342_add_indexes_to_email_addresses.rb @@ -0,0 +1,9 @@ +class AddIndexesToEmailAddresses < ActiveRecord::Migration[7.0] + def change + add_index :email_addresses, :created_at + add_index :email_addresses, :is_verified, where: "is_verified = FALSE" + add_index :email_addresses, :is_deliverable, where: "is_deliverable = FALSE" + add_index :email_addresses, "lower(address)", unique: true, name: "index_email_addresses_on_lower_address_unique" + add_index :email_addresses, :normalized_address, unique: true, name: "index_email_addresses_on_normalize_address_unique" + end +end diff --git a/db/structure.sql b/db/structure.sql index 23ae54c55..569ec991c 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -3868,6 +3868,41 @@ CREATE INDEX index_email_addresses_on_address ON public.email_addresses USING bt CREATE INDEX index_email_addresses_on_address_trgm ON public.email_addresses USING gin (address public.gin_trgm_ops); +-- +-- Name: index_email_addresses_on_created_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_email_addresses_on_created_at ON public.email_addresses USING btree (created_at); + + +-- +-- Name: index_email_addresses_on_is_deliverable; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_email_addresses_on_is_deliverable ON public.email_addresses USING btree (is_deliverable) WHERE (is_deliverable = false); + + +-- +-- Name: index_email_addresses_on_is_verified; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_email_addresses_on_is_verified ON public.email_addresses USING btree (is_verified) WHERE (is_verified = false); + + +-- +-- Name: index_email_addresses_on_lower_address_unique; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_email_addresses_on_lower_address_unique ON public.email_addresses USING btree (lower((address)::text)); + + +-- +-- Name: index_email_addresses_on_normalize_address_unique; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_email_addresses_on_normalize_address_unique ON public.email_addresses USING btree (normalized_address); + + -- -- Name: index_email_addresses_on_normalized_address; Type: INDEX; Schema: public; Owner: - -- @@ -6749,6 +6784,7 @@ INSERT INTO "schema_migrations" (version) VALUES ('20220923010905'), ('20220924092056'), ('20220925045236'), -('20220926050108'); +('20220926050108'), +('20221003080342');