Add data migration to fill EmailAddressVerifications

This commit is contained in:
Alex Sherman 2020-06-08 14:12:39 +05:00
parent 9758c82221
commit ee7d69c1ce
4 changed files with 29 additions and 160 deletions

View file

@ -3,12 +3,14 @@ module Concerns
extend ActiveSupport::Concern
def email_verification
EmailAddressVerification.find_or_create_by(email: self.email)
EmailAddressVerification.find_or_create_by(email: self.email,
domain: Mail::Address.new(self.email).domain)
end
def billing_email_verification
if self.attribute_names.include?('billing_email')
EmailAddressVerification.find_or_create_by(email: self.billing_email)
EmailAddressVerification.find_or_create_by(email: self.billing_email,
domain: Mail::Address.new(self.email).domain)
else
nil
end
@ -23,8 +25,6 @@ module Concerns
end
def correct_billing_email_format
return if self[:billing_email].blank?
verify_email_mx_smtp(field: :billing_email, email: billing_email)
end
end

View file

@ -10,6 +10,11 @@ class EmailAddressVerification < ApplicationRecord
def verify
validation_request = Truemail.validate(email)
update(verified_at: Time.zone.now) if validation_request.result.success
if validation_request.result.success
update(verified_at: Time.zone.now,
success: true)
end
validation_request.result.success
end
end

View file

@ -0,0 +1,19 @@
class FillEmailVerifications < ActiveRecord::Migration[6.0]
def up
registrar_billing_emails = Registrar.pluck(:billing_email).uniq.reject(&:blank?)
registrar_emails = Registrar.pluck(:email).uniq.reject(&:blank?)
contact_emails = Contact.pluck(:email).uniq.reject(&:blank?)
emails = (contact_emails || registrar_emails || registrar_billing_emails).uniq
result = emails.map do |email|
{ email: email, domain: Mail::Address.new(email).domain || 'not_found' }
end
EmailAddressVerification.import result, batch_size: 500
end
def down
EmailAddressVerification.delete_all
end
end

View file

@ -4068,161 +4068,6 @@ CREATE UNIQUE INDEX unique_data_migrations ON public.data_migrations USING btree
CREATE UNIQUE INDEX unique_schema_migrations ON public.schema_migrations USING btree (version);
--
-- Name: account_activities process_account_activity_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_account_activity_audit AFTER INSERT OR DELETE OR UPDATE ON public.account_activities FOR EACH ROW EXECUTE PROCEDURE public.process_account_activity_audit();
--
-- Name: accounts process_account_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_account_audit AFTER INSERT OR DELETE OR UPDATE ON public.accounts FOR EACH ROW EXECUTE PROCEDURE public.process_account_audit();
--
-- Name: actions process_action_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_action_audit AFTER INSERT OR DELETE OR UPDATE ON public.actions FOR EACH ROW EXECUTE PROCEDURE public.process_action_audit();
--
-- Name: bank_statements process_bank_statement_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_bank_statement_audit AFTER INSERT OR DELETE OR UPDATE ON public.bank_statements FOR EACH ROW EXECUTE PROCEDURE public.process_bank_statement_audit();
--
-- Name: bank_transactions process_bank_transaction_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_bank_transaction_audit AFTER INSERT OR DELETE OR UPDATE ON public.bank_transactions FOR EACH ROW EXECUTE PROCEDURE public.process_bank_transaction_audit();
--
-- Name: blocked_domains process_blocked_domain_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_blocked_domain_audit AFTER INSERT OR DELETE OR UPDATE ON public.blocked_domains FOR EACH ROW EXECUTE PROCEDURE public.process_blocked_domain_audit();
--
-- Name: certificates process_certificate_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_certificate_audit AFTER INSERT OR DELETE OR UPDATE ON public.certificates FOR EACH ROW EXECUTE PROCEDURE public.process_certificate_audit();
--
-- Name: contacts process_contact_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_contact_audit AFTER INSERT OR DELETE OR UPDATE ON public.contacts FOR EACH ROW EXECUTE PROCEDURE public.process_contact_audit();
--
-- Name: dnskeys process_dnskey_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_dnskey_audit AFTER INSERT OR DELETE OR UPDATE ON public.dnskeys FOR EACH ROW EXECUTE PROCEDURE public.process_dnskey_audit();
--
-- Name: domains process_domain_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_domain_audit AFTER INSERT OR DELETE OR UPDATE ON public.domains FOR EACH ROW EXECUTE PROCEDURE public.process_domain_audit();
--
-- Name: domain_contacts process_domain_contact_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_domain_contact_audit AFTER INSERT OR DELETE OR UPDATE ON public.domain_contacts FOR EACH ROW EXECUTE PROCEDURE public.process_domain_contact_audit();
--
-- Name: invoices process_invoice_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_invoice_audit AFTER INSERT OR DELETE OR UPDATE ON public.invoices FOR EACH ROW EXECUTE PROCEDURE public.process_invoice_audit();
--
-- Name: invoice_items process_invoice_item_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_invoice_item_audit AFTER INSERT OR DELETE OR UPDATE ON public.invoice_items FOR EACH ROW EXECUTE PROCEDURE public.process_invoice_item_audit();
--
-- Name: nameservers process_nameserver_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_nameserver_audit AFTER INSERT OR DELETE OR UPDATE ON public.nameservers FOR EACH ROW EXECUTE PROCEDURE public.process_nameserver_audit();
--
-- Name: notifications process_notification_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_notification_audit AFTER INSERT OR DELETE OR UPDATE ON public.notifications FOR EACH ROW EXECUTE PROCEDURE public.process_notification_audit();
--
-- Name: payment_orders process_payment_order_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_payment_order_audit AFTER INSERT OR DELETE OR UPDATE ON public.payment_orders FOR EACH ROW EXECUTE PROCEDURE public.process_payment_order_audit();
--
-- Name: registrant_verifications process_registrant_verification_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_registrant_verification_audit AFTER INSERT OR DELETE OR UPDATE ON public.registrant_verifications FOR EACH ROW EXECUTE PROCEDURE public.process_registrant_verification_audit();
--
-- Name: registrars process_registrar_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_registrar_audit AFTER INSERT OR DELETE OR UPDATE ON public.registrars FOR EACH ROW EXECUTE PROCEDURE public.process_registrar_audit();
--
-- Name: reserved_domains process_reserved_domain_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_reserved_domain_audit AFTER INSERT OR DELETE OR UPDATE ON public.reserved_domains FOR EACH ROW EXECUTE PROCEDURE public.process_reserved_domain_audit();
--
-- Name: settings process_setting_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_setting_audit AFTER INSERT OR DELETE OR UPDATE ON public.settings FOR EACH ROW EXECUTE PROCEDURE public.process_setting_audit();
--
-- Name: users process_user_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_user_audit AFTER INSERT OR DELETE OR UPDATE ON public.users FOR EACH ROW EXECUTE PROCEDURE public.process_user_audit();
--
-- Name: white_ips process_white_ip_audit; Type: TRIGGER; Schema: public; Owner: -
--
CREATE TRIGGER process_white_ip_audit AFTER INSERT OR DELETE OR UPDATE ON public.white_ips FOR EACH ROW EXECUTE PROCEDURE public.process_white_ip_audit();
--
-- Name: contacts contacts_registrar_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: -
--