From c33f0dc07ffcc75e8ccda4c205a795ccc3009da7 Mon Sep 17 00:00:00 2001 From: Ben McIlwain Date: Mon, 27 Oct 2025 16:34:50 -0400 Subject: [PATCH] Remove all foreign key constraints pointing to contact tables (#2857) This affects FKs pointing to both Contact and ContactHistory. This is in preparation to us deleting all rows in those two tables, and then subsequently removing all application logic having to do with contacts entirely. --- .../sql/er_diagram/brief_er_diagram.html | 606 ++++++------------ .../sql/er_diagram/full_er_diagram.html | 596 ++++++----------- db/src/main/resources/sql/flyway.txt | 3 + .../V215__drop_contact_fks_contacthistory.sql | 16 + .../flyway/V216__drop_contact_fks_domain.sql | 19 + .../V217__drop_contact_fks_pollmessage.sql | 17 + .../resources/sql/schema/nomulus.golden.sql | 56 -- 7 files changed, 441 insertions(+), 872 deletions(-) create mode 100644 db/src/main/resources/sql/flyway/V215__drop_contact_fks_contacthistory.sql create mode 100644 db/src/main/resources/sql/flyway/V216__drop_contact_fks_domain.sql create mode 100644 db/src/main/resources/sql/flyway/V217__drop_contact_fks_pollmessage.sql diff --git a/db/src/main/resources/sql/er_diagram/brief_er_diagram.html b/db/src/main/resources/sql/er_diagram/brief_er_diagram.html index a794ac3c3..a4837be05 100644 --- a/db/src/main/resources/sql/er_diagram/brief_er_diagram.html +++ b/db/src/main/resources/sql/er_diagram/brief_er_diagram.html @@ -261,493 +261,461 @@ td.section { generated on - 2025-10-23 21:01:05 + 2025-10-27 19:43:48 last flyway file - V214__domain_unique_domain_name_active.sql + V217__drop_contact_fks_pollmessage.sql

 

 

- - - SchemaCrawler_Diagram generated by SchemaCrawler 16.27.1 generated on 2025-10-23 21:01:05 + + + SchemaCrawler_Diagram generated by SchemaCrawler 16.27.1 generated on 2025-10-27 19:43:48 - allocationtoken_a08ccbef public."AllocationToken" [table] token text not null domain_name text redemption_domain_repo_id text token_type text + allocationtoken_a08ccbef public."AllocationToken" [table] token text not null domain_name text redemption_domain_repo_id text token_type text - billingevent_a57d1815 public."BillingEvent" [table] billing_event_id int8 not null registrar_id text not null domain_history_revision_id int8 not null domain_repo_id text not null event_time timestamptz not null allocation_token text billing_time timestamptz cancellation_matching_billing_recurrence_id int8 synthetic_creation_time timestamptz recurrence_history_revision_id int8 + billingevent_a57d1815 public."BillingEvent" [table] billing_event_id int8 not null registrar_id text not null domain_history_revision_id int8 not null domain_repo_id text not null event_time timestamptz not null allocation_token text billing_time timestamptz cancellation_matching_billing_recurrence_id int8 synthetic_creation_time timestamptz recurrence_history_revision_id int8 - billingevent_a57d1815:w->allocationtoken_a08ccbef:e fk_billing_event_allocation_token + billingevent_a57d1815:w->allocationtoken_a08ccbef:e fk_billing_event_allocation_token - billingrecurrence_5fa2cb01 public."BillingRecurrence" [table] billing_recurrence_id int8 not null registrar_id text not null domain_history_revision_id int8 not null domain_repo_id text not null event_time timestamptz not null recurrence_end_time timestamptz recurrence_time_of_year text recurrence_last_expansion timestamptz not null + billingrecurrence_5fa2cb01 public."BillingRecurrence" [table] billing_recurrence_id int8 not null registrar_id text not null domain_history_revision_id int8 not null domain_repo_id text not null event_time timestamptz not null recurrence_end_time timestamptz recurrence_time_of_year text recurrence_last_expansion timestamptz not null - billingevent_a57d1815:w->billingrecurrence_5fa2cb01:e fk_billing_event_cancellation_matching_billing_recurrence_id + billingevent_a57d1815:w->billingrecurrence_5fa2cb01:e fk_billing_event_cancellation_matching_billing_recurrence_id - registrar_6e1503e3 public."Registrar" [table] registrar_id text not null iana_identifier int8 registrar_name text not null + registrar_6e1503e3 public."Registrar" [table] registrar_id text not null iana_identifier int8 registrar_name text not null - - billingevent_a57d1815:w->registrar_6e1503e3:e fk_billing_event_registrar_id + + billingevent_a57d1815:w->registrar_6e1503e3:e fk_billing_event_registrar_id - domain_6c51cffa public."Domain" [table] repo_id text not null creation_registrar_id text not null creation_time timestamptz not null current_sponsor_registrar_id text not null deletion_time timestamptz last_epp_update_registrar_id text domain_name text tld text admin_contact text billing_contact text registrant_contact text tech_contact text transfer_billing_cancellation_id int8 transfer_billing_event_id int8 transfer_billing_recurrence_id int8 transfer_gaining_registrar_id text transfer_losing_registrar_id text billing_recurrence_id int8 autorenew_end_time timestamptz current_package_token text lordn_phase text not null + domain_6c51cffa public."Domain" [table] repo_id text not null creation_registrar_id text not null creation_time timestamptz not null current_sponsor_registrar_id text not null deletion_time timestamptz last_epp_update_registrar_id text domain_name text tld text admin_contact text billing_contact text registrant_contact text tech_contact text transfer_billing_cancellation_id int8 transfer_billing_event_id int8 transfer_billing_recurrence_id int8 transfer_gaining_registrar_id text transfer_losing_registrar_id text billing_recurrence_id int8 autorenew_end_time timestamptz current_package_token text lordn_phase text not null - domain_6c51cffa:w->allocationtoken_a08ccbef:e fk_domain_current_package_token + domain_6c51cffa:w->allocationtoken_a08ccbef:e fk_domain_current_package_token - domain_6c51cffa:w->billingevent_a57d1815:e fk_domain_transfer_billing_event_id + domain_6c51cffa:w->billingevent_a57d1815:e fk_domain_transfer_billing_event_id - billingcancellation_6eedf614 public."BillingCancellation" [table] billing_cancellation_id int8 not null registrar_id text not null domain_history_revision_id int8 not null domain_repo_id text not null event_time timestamptz not null billing_time timestamptz billing_event_id int8 billing_recurrence_id int8 + billingcancellation_6eedf614 public."BillingCancellation" [table] billing_cancellation_id int8 not null registrar_id text not null domain_history_revision_id int8 not null domain_repo_id text not null event_time timestamptz not null billing_time timestamptz billing_event_id int8 billing_recurrence_id int8 - domain_6c51cffa:w->billingcancellation_6eedf614:e fk_domain_transfer_billing_cancellation_id + domain_6c51cffa:w->billingcancellation_6eedf614:e fk_domain_transfer_billing_cancellation_id - domain_6c51cffa:w->billingrecurrence_5fa2cb01:e fk_domain_billing_recurrence_id + domain_6c51cffa:w->billingrecurrence_5fa2cb01:e fk_domain_billing_recurrence_id - domain_6c51cffa:w->billingrecurrence_5fa2cb01:e fk_domain_transfer_billing_recurrence_id - - - - contact_8de8cb16 public."Contact" [table] repo_id text not null creation_registrar_id text not null creation_time timestamptz not null current_sponsor_registrar_id text not null deletion_time timestamptz last_epp_update_registrar_id text contact_id text search_name text transfer_gaining_registrar_id text transfer_losing_registrar_id text - - - - domain_6c51cffa:w->contact_8de8cb16:e fk_domain_admin_contact - - - - domain_6c51cffa:w->contact_8de8cb16:e fk_domain_billing_contact - - - - domain_6c51cffa:w->contact_8de8cb16:e fk_domain_registrant_contact - - - - domain_6c51cffa:w->contact_8de8cb16:e fk_domain_tech_contact + domain_6c51cffa:w->billingrecurrence_5fa2cb01:e fk_domain_transfer_billing_recurrence_id - - domain_6c51cffa:w->registrar_6e1503e3:e fk2jc69qyg2tv9hhnmif6oa1cx1 + + domain_6c51cffa:w->registrar_6e1503e3:e fk2jc69qyg2tv9hhnmif6oa1cx1 - - domain_6c51cffa:w->registrar_6e1503e3:e fk2u3srsfbei272093m3b3xwj23 + + domain_6c51cffa:w->registrar_6e1503e3:e fk2u3srsfbei272093m3b3xwj23 - - domain_6c51cffa:w->registrar_6e1503e3:e fkjc0r9r5y1lfbt4gpbqw4wsuvq + + domain_6c51cffa:w->registrar_6e1503e3:e fkjc0r9r5y1lfbt4gpbqw4wsuvq - - domain_6c51cffa:w->registrar_6e1503e3:e fk_domain_transfer_gaining_registrar_id + + domain_6c51cffa:w->registrar_6e1503e3:e fk_domain_transfer_gaining_registrar_id - - domain_6c51cffa:w->registrar_6e1503e3:e fk_domain_transfer_losing_registrar_id + + domain_6c51cffa:w->registrar_6e1503e3:e fk_domain_transfer_losing_registrar_id - tld_f1fa57e2 public."Tld" [table] tld_name text not null + tld_f1fa57e2 public."Tld" [table] tld_name text not null - - domain_6c51cffa:w->tld_f1fa57e2:e fk_domain_tld + + domain_6c51cffa:w->tld_f1fa57e2:e fk_domain_tld - domainhistory_a54cc226 public."DomainHistory" [table] history_revision_id int8 not null history_registrar_id text history_modification_time timestamptz not null history_type text not null creation_time timestamptz domain_repo_id text not null current_package_token text + domainhistory_a54cc226 public."DomainHistory" [table] history_revision_id int8 not null history_registrar_id text history_modification_time timestamptz not null history_type text not null creation_time timestamptz domain_repo_id text not null current_package_token text - domainhistory_a54cc226:w->allocationtoken_a08ccbef:e fk_domain_history_current_package_token + domainhistory_a54cc226:w->allocationtoken_a08ccbef:e fk_domain_history_current_package_token - - domainhistory_a54cc226:w->domain_6c51cffa:e fk_domain_history_domain_repo_id + + domainhistory_a54cc226:w->domain_6c51cffa:e fk_domain_history_domain_repo_id - - domainhistory_a54cc226:w->registrar_6e1503e3:e fk_domain_history_registrar_id + + domainhistory_a54cc226:w->registrar_6e1503e3:e fk_domain_history_registrar_id - billingcancellation_6eedf614:w->billingevent_a57d1815:e fk_billing_cancellation_billing_event_id + billingcancellation_6eedf614:w->billingevent_a57d1815:e fk_billing_cancellation_billing_event_id - billingcancellation_6eedf614:w->billingrecurrence_5fa2cb01:e fk_billing_cancellation_billing_recurrence_id + billingcancellation_6eedf614:w->billingrecurrence_5fa2cb01:e fk_billing_cancellation_billing_recurrence_id - - billingcancellation_6eedf614:w->registrar_6e1503e3:e fk_billing_cancellation_registrar_id + + billingcancellation_6eedf614:w->registrar_6e1503e3:e fk_billing_cancellation_registrar_id - graceperiod_cd3b2e8f public."GracePeriod" [table] grace_period_id int8 not null billing_event_id int8 billing_recurrence_id int8 registrar_id text not null domain_repo_id text not null + graceperiod_cd3b2e8f public."GracePeriod" [table] grace_period_id int8 not null billing_event_id int8 billing_recurrence_id int8 registrar_id text not null domain_repo_id text not null - graceperiod_cd3b2e8f:w->billingevent_a57d1815:e fk_grace_period_billing_event_id + graceperiod_cd3b2e8f:w->billingevent_a57d1815:e fk_grace_period_billing_event_id - - graceperiod_cd3b2e8f:w->domain_6c51cffa:e fk_grace_period_domain_repo_id + + graceperiod_cd3b2e8f:w->domain_6c51cffa:e fk_grace_period_domain_repo_id - graceperiod_cd3b2e8f:w->billingrecurrence_5fa2cb01:e fk_grace_period_billing_recurrence_id + graceperiod_cd3b2e8f:w->billingrecurrence_5fa2cb01:e fk_grace_period_billing_recurrence_id - - graceperiod_cd3b2e8f:w->registrar_6e1503e3:e fk_grace_period_registrar_id + + graceperiod_cd3b2e8f:w->registrar_6e1503e3:e fk_grace_period_registrar_id - - billingrecurrence_5fa2cb01:w->registrar_6e1503e3:e fk_billing_recurrence_registrar_id + + billingrecurrence_5fa2cb01:w->registrar_6e1503e3:e fk_billing_recurrence_registrar_id - bsadomainrefresh_c8f4c45d public."BsaDomainRefresh" [table] job_id bigserial not null auto-incremented + bsadomainrefresh_c8f4c45d public."BsaDomainRefresh" [table] job_id bigserial not null auto-incremented - bsadownload_98d031ce public."BsaDownload" [table] job_id bigserial not null auto-incremented creation_time timestamptz not null + bsadownload_98d031ce public."BsaDownload" [table] job_id bigserial not null auto-incremented creation_time timestamptz not null - bsalabel_2755e1da public."BsaLabel" [table] label text not null + bsalabel_2755e1da public."BsaLabel" [table] label text not null - bsaunblockabledomain_b739a38 public."BsaUnblockableDomain" [table] label text not null tld text not null + bsaunblockabledomain_b739a38 public."BsaUnblockableDomain" [table] label text not null tld text not null - bsaunblockabledomain_b739a38:w->bsalabel_2755e1da:e fkbsaunblockabledomainlabel + bsaunblockabledomain_b739a38:w->bsalabel_2755e1da:e fkbsaunblockabledomainlabel - claimsentry_105da9f1 public."ClaimsEntry" [table] revision_id int8 not null domain_label text not null + claimsentry_105da9f1 public."ClaimsEntry" [table] revision_id int8 not null domain_label text not null - claimslist_3d49bc2b public."ClaimsList" [table] revision_id bigserial not null auto-incremented + claimslist_3d49bc2b public."ClaimsList" [table] revision_id bigserial not null auto-incremented - claimsentry_105da9f1:w->claimslist_3d49bc2b:e fk6sc6at5hedffc0nhdcab6ivuq + claimsentry_105da9f1:w->claimslist_3d49bc2b:e fk6sc6at5hedffc0nhdcab6ivuq - consoleeppactionhistory_bcc2a2c6 public."ConsoleEppActionHistory" [table] history_revision_id int8 not null repo_id text not null revision_id int8 not null history_acting_user text not null + consoleeppactionhistory_bcc2a2c6 public."ConsoleEppActionHistory" [table] history_revision_id int8 not null repo_id text not null revision_id int8 not null history_acting_user text not null - consoleupdatehistory_5237b2aa public."ConsoleUpdateHistory" [table] revision_id int8 not null modification_time timestamptz not null type text not null acting_user text not null + consoleupdatehistory_5237b2aa public."ConsoleUpdateHistory" [table] revision_id int8 not null modification_time timestamptz not null type text not null acting_user text not null - user_f2216f01 public."User" [table] email_address text not null + user_f2216f01 public."User" [table] email_address text not null - - consoleupdatehistory_5237b2aa:w->user_f2216f01:e fk_console_update_history_acting_user + + consoleupdatehistory_5237b2aa:w->user_f2216f01:e fk_console_update_history_acting_user + + + + contact_8de8cb16 public."Contact" [table] repo_id text not null creation_registrar_id text not null creation_time timestamptz not null current_sponsor_registrar_id text not null deletion_time timestamptz last_epp_update_registrar_id text contact_id text search_name text transfer_gaining_registrar_id text transfer_losing_registrar_id text - - contact_8de8cb16:w->registrar_6e1503e3:e fk1sfyj7o7954prbn1exk7lpnoe + + contact_8de8cb16:w->registrar_6e1503e3:e fk1sfyj7o7954prbn1exk7lpnoe - - contact_8de8cb16:w->registrar_6e1503e3:e fk93c185fx7chn68uv7nl6uv2s0 + + contact_8de8cb16:w->registrar_6e1503e3:e fk93c185fx7chn68uv7nl6uv2s0 - - contact_8de8cb16:w->registrar_6e1503e3:e fkmb7tdiv85863134w1wogtxrb2 + + contact_8de8cb16:w->registrar_6e1503e3:e fkmb7tdiv85863134w1wogtxrb2 - - contact_8de8cb16:w->registrar_6e1503e3:e fk_contact_transfer_gaining_registrar_id + + contact_8de8cb16:w->registrar_6e1503e3:e fk_contact_transfer_gaining_registrar_id - - contact_8de8cb16:w->registrar_6e1503e3:e fk_contact_transfer_losing_registrar_id + + contact_8de8cb16:w->registrar_6e1503e3:e fk_contact_transfer_losing_registrar_id - contacthistory_d2964f8a public."ContactHistory" [table] history_revision_id int8 not null history_registrar_id text history_modification_time timestamptz not null history_type text not null creation_time timestamptz contact_repo_id text not null - - - - contacthistory_d2964f8a:w->contact_8de8cb16:e fk_contact_history_contact_repo_id + contacthistory_d2964f8a public."ContactHistory" [table] history_revision_id int8 not null history_registrar_id text history_modification_time timestamptz not null history_type text not null creation_time timestamptz contact_repo_id text not null - - contacthistory_d2964f8a:w->registrar_6e1503e3:e fk_contact_history_registrar_id + + contacthistory_d2964f8a:w->registrar_6e1503e3:e fk_contact_history_registrar_id - + - pollmessage_614a523e public."PollMessage" [table] poll_message_id int8 not null registrar_id text not null contact_repo_id text contact_history_revision_id int8 domain_repo_id text domain_history_revision_id int8 event_time timestamptz not null host_repo_id text host_history_revision_id int8 transfer_response_gaining_registrar_id text transfer_response_losing_registrar_id text + cursor_6af40e8c public."Cursor" [table] "scope" text not null type text not null - - - pollmessage_614a523e:w->domain_6c51cffa:e fk_poll_message_domain_repo_id + + + delegationsignerdata_e542a872 public."DelegationSignerData" [table] domain_repo_id text not null key_tag int4 not null algorithm int4 not null digest bytea not null digest_type int4 not null - - - pollmessage_614a523e:w->contact_8de8cb16:e fk_poll_message_contact_repo_id + + + delegationsignerdata_e542a872:w->domain_6c51cffa:e fktr24j9v14ph2mfuw2gsmt12kq - - - pollmessage_614a523e:w->contacthistory_d2964f8a:e fk_poll_message_contact_history + + + dnsrefreshrequest_4e6affb3 public."DnsRefreshRequest" [table] id bigserial not null auto-incremented request_time timestamptz not null last_process_time timestamptz not null - - - pollmessage_614a523e:w->contacthistory_d2964f8a:e fk_poll_message_contact_history + + + domainhost_1ea127c2 public."DomainHost" [table] domain_repo_id text not null host_repo_id text + + + + domainhost_1ea127c2:w->domain_6c51cffa:e fkfmi7bdink53swivs390m2btxg + + host_f21b78de public."Host" [table] repo_id text not null creation_registrar_id text creation_time timestamptz current_sponsor_registrar_id text deletion_time timestamptz last_epp_update_registrar_id text host_name text superordinate_domain text inet_addresses _text + + + + domainhost_1ea127c2:w->host_f21b78de:e fk_domainhost_host_valid + + + + host_f21b78de:w->domain_6c51cffa:e fk_host_superordinate_domain + + + + host_f21b78de:w->registrar_6e1503e3:e fk_host_creation_registrar_id + + + + host_f21b78de:w->registrar_6e1503e3:e fk_host_current_sponsor_registrar_id + + + + host_f21b78de:w->registrar_6e1503e3:e fk_host_last_epp_update_registrar_id + + - host_f21b78de public."Host" [table] repo_id text not null creation_registrar_id text creation_time timestamptz current_sponsor_registrar_id text deletion_time timestamptz last_epp_update_registrar_id text host_name text superordinate_domain text inet_addresses _text + pollmessage_614a523e public."PollMessage" [table] poll_message_id int8 not null registrar_id text not null domain_repo_id text domain_history_revision_id int8 event_time timestamptz not null host_repo_id text host_history_revision_id int8 transfer_response_gaining_registrar_id text transfer_response_losing_registrar_id text + + + + pollmessage_614a523e:w->domain_6c51cffa:e fk_poll_message_domain_repo_id - - pollmessage_614a523e:w->host_f21b78de:e fk_poll_message_host_repo_id + + pollmessage_614a523e:w->host_f21b78de:e fk_poll_message_host_repo_id - hosthistory_56210c2 public."HostHistory" [table] history_revision_id int8 not null history_registrar_id text not null history_modification_time timestamptz not null history_type text not null host_name text creation_time timestamptz host_repo_id text not null + hosthistory_56210c2 public."HostHistory" [table] history_revision_id int8 not null history_registrar_id text not null history_modification_time timestamptz not null history_type text not null host_name text creation_time timestamptz host_repo_id text not null - - pollmessage_614a523e:w->hosthistory_56210c2:e fk_poll_message_host_history + + pollmessage_614a523e:w->hosthistory_56210c2:e fk_poll_message_host_history - - pollmessage_614a523e:w->hosthistory_56210c2:e fk_poll_message_host_history - - - - pollmessage_614a523e:w->registrar_6e1503e3:e fk_poll_message_registrar_id - - - - pollmessage_614a523e:w->registrar_6e1503e3:e fk_poll_message_transfer_response_gaining_registrar_id - - - - pollmessage_614a523e:w->registrar_6e1503e3:e fk_poll_message_transfer_response_losing_registrar_id - - - - cursor_6af40e8c public."Cursor" [table] "scope" text not null type text not null - - - - delegationsignerdata_e542a872 public."DelegationSignerData" [table] domain_repo_id text not null key_tag int4 not null algorithm int4 not null digest bytea not null digest_type int4 not null - - - - delegationsignerdata_e542a872:w->domain_6c51cffa:e fktr24j9v14ph2mfuw2gsmt12kq - - - - dnsrefreshrequest_4e6affb3 public."DnsRefreshRequest" [table] id bigserial not null auto-incremented request_time timestamptz not null last_process_time timestamptz not null - - - - domainhost_1ea127c2 public."DomainHost" [table] domain_repo_id text not null host_repo_id text - - - - domainhost_1ea127c2:w->domain_6c51cffa:e fkfmi7bdink53swivs390m2btxg - - - - domainhost_1ea127c2:w->host_f21b78de:e fk_domainhost_host_valid - - - host_f21b78de:w->domain_6c51cffa:e fk_host_superordinate_domain + pollmessage_614a523e:w->hosthistory_56210c2:e fk_poll_message_host_history - - - host_f21b78de:w->registrar_6e1503e3:e fk_host_creation_registrar_id + + + pollmessage_614a523e:w->registrar_6e1503e3:e fk_poll_message_registrar_id - - - host_f21b78de:w->registrar_6e1503e3:e fk_host_current_sponsor_registrar_id + + + pollmessage_614a523e:w->registrar_6e1503e3:e fk_poll_message_transfer_response_gaining_registrar_id - - - host_f21b78de:w->registrar_6e1503e3:e fk_host_last_epp_update_registrar_id + + + pollmessage_614a523e:w->registrar_6e1503e3:e fk_poll_message_transfer_response_losing_registrar_id - domaindsdatahistory_995b060d public."DomainDsDataHistory" [table] ds_data_history_revision_id int8 not null domain_history_revision_id int8 not null domain_repo_id text + domaindsdatahistory_995b060d public."DomainDsDataHistory" [table] ds_data_history_revision_id int8 not null domain_history_revision_id int8 not null domain_repo_id text - domainhistoryhost_9f3f23ee public."DomainHistoryHost" [table] domain_history_history_revision_id int8 not null host_repo_id text domain_history_domain_repo_id text not null + domainhistoryhost_9f3f23ee public."DomainHistoryHost" [table] domain_history_history_revision_id int8 not null host_repo_id text domain_history_domain_repo_id text not null - - domainhistoryhost_9f3f23ee:w->domainhistory_a54cc226:e fka9woh3hu8gx5x0vly6bai327n + + domainhistoryhost_9f3f23ee:w->domainhistory_a54cc226:e fka9woh3hu8gx5x0vly6bai327n - - domainhistoryhost_9f3f23ee:w->domainhistory_a54cc226:e fka9woh3hu8gx5x0vly6bai327n + + domainhistoryhost_9f3f23ee:w->domainhistory_a54cc226:e fka9woh3hu8gx5x0vly6bai327n - domaintransactionrecord_6e77ff61 public."DomainTransactionRecord" [table] id bigserial not null auto-incremented tld text not null domain_repo_id text history_revision_id int8 + domaintransactionrecord_6e77ff61 public."DomainTransactionRecord" [table] id bigserial not null auto-incremented tld text not null domain_repo_id text history_revision_id int8 - - domaintransactionrecord_6e77ff61:w->tld_f1fa57e2:e fk_domain_transaction_record_tld + + domaintransactionrecord_6e77ff61:w->tld_f1fa57e2:e fk_domain_transaction_record_tld - featureflag_3ee43a78 public."FeatureFlag" [table] feature_name text not null + featureflag_3ee43a78 public."FeatureFlag" [table] feature_name text not null - graceperiodhistory_40ccc1f1 public."GracePeriodHistory" [table] grace_period_history_revision_id int8 not null domain_repo_id text not null domain_history_revision_id int8 + graceperiodhistory_40ccc1f1 public."GracePeriodHistory" [table] grace_period_history_revision_id int8 not null domain_repo_id text not null domain_history_revision_id int8 - - hosthistory_56210c2:w->host_f21b78de:e fk_hosthistory_host + + hosthistory_56210c2:w->host_f21b78de:e fk_hosthistory_host - - hosthistory_56210c2:w->registrar_6e1503e3:e fk_history_registrar_id + + hosthistory_56210c2:w->registrar_6e1503e3:e fk_history_registrar_id - lock_f21d4861 public."Lock" [table] resource_name text not null "scope" text not null + lock_f21d4861 public."Lock" [table] resource_name text not null "scope" text not null - packagepromotion_56aa33 public."PackagePromotion" [table] package_promotion_id bigserial not null auto-incremented token text not null + packagepromotion_56aa33 public."PackagePromotion" [table] package_promotion_id bigserial not null auto-incremented token text not null - passwordresetrequest_8484e7b1 public."PasswordResetRequest" [table] verification_code text not null + passwordresetrequest_8484e7b1 public."PasswordResetRequest" [table] verification_code text not null - premiumentry_b0060b91 public."PremiumEntry" [table] revision_id int8 not null domain_label text not null + premiumentry_b0060b91 public."PremiumEntry" [table] revision_id int8 not null domain_label text not null - premiumlist_7c3ea68b public."PremiumList" [table] revision_id bigserial not null auto-incremented name text not null + premiumlist_7c3ea68b public."PremiumList" [table] revision_id bigserial not null auto-incremented name text not null - - premiumentry_b0060b91:w->premiumlist_7c3ea68b:e fko0gw90lpo1tuee56l0nb6y6g5 + + premiumentry_b0060b91:w->premiumlist_7c3ea68b:e fko0gw90lpo1tuee56l0nb6y6g5 - rderevision_83396864 public."RdeRevision" [table] tld text not null mode text not null "date" date not null + rderevision_83396864 public."RdeRevision" [table] tld text not null mode text not null "date" date not null - registrarpoc_ab47054d public."RegistrarPoc" [table] email_address text not null registrar_id text not null + registrarpoc_ab47054d public."RegistrarPoc" [table] email_address text not null registrar_id text not null - - registrarpoc_ab47054d:w->registrar_6e1503e3:e fk_registrar_poc_registrar_id + + registrarpoc_ab47054d:w->registrar_6e1503e3:e fk_registrar_poc_registrar_id - registrarupdatehistory_8a38bed4 public."RegistrarUpdateHistory" [table] history_revision_id int8 not null registrar_id text not null history_acting_user text not null + registrarupdatehistory_8a38bed4 public."RegistrarUpdateHistory" [table] history_revision_id int8 not null registrar_id text not null history_acting_user text not null - - registrarupdatehistory_8a38bed4:w->registrar_6e1503e3:e fkregistrarupdatehistoryregistrarid + + registrarupdatehistory_8a38bed4:w->registrar_6e1503e3:e fkregistrarupdatehistoryregistrarid - registrarpocupdatehistory_31e5d9aa public."RegistrarPocUpdateHistory" [table] history_revision_id int8 not null email_address text not null registrar_id text not null history_acting_user text not null + registrarpocupdatehistory_31e5d9aa public."RegistrarPocUpdateHistory" [table] history_revision_id int8 not null email_address text not null registrar_id text not null history_acting_user text not null - - registrarpocupdatehistory_31e5d9aa:w->registrarpoc_ab47054d:e fkregistrarpocupdatehistoryemailaddress + + registrarpocupdatehistory_31e5d9aa:w->registrarpoc_ab47054d:e fkregistrarpocupdatehistoryemailaddress - - registrarpocupdatehistory_31e5d9aa:w->registrarpoc_ab47054d:e fkregistrarpocupdatehistoryemailaddress + + registrarpocupdatehistory_31e5d9aa:w->registrarpoc_ab47054d:e fkregistrarpocupdatehistoryemailaddress - registrylock_ac88663e public."RegistryLock" [table] revision_id bigserial not null auto-incremented registrar_id text not null repo_id text not null verification_code text not null relock_revision_id int8 + registrylock_ac88663e public."RegistryLock" [table] revision_id bigserial not null auto-incremented registrar_id text not null repo_id text not null verification_code text not null relock_revision_id int8 - - registrylock_ac88663e:w->registrylock_ac88663e:e fk2lhcwpxlnqijr96irylrh1707 + + registrylock_ac88663e:w->registrylock_ac88663e:e fk2lhcwpxlnqijr96irylrh1707 - reservedentry_1a7b8520 public."ReservedEntry" [table] revision_id int8 not null domain_label text not null + reservedentry_1a7b8520 public."ReservedEntry" [table] revision_id int8 not null domain_label text not null - reservedlist_b97c3f1c public."ReservedList" [table] revision_id bigserial not null auto-incremented name text not null + reservedlist_b97c3f1c public."ReservedList" [table] revision_id bigserial not null auto-incremented name text not null - - reservedentry_1a7b8520:w->reservedlist_b97c3f1c:e fkgq03rk0bt1hb915dnyvd3vnfc + + reservedentry_1a7b8520:w->reservedlist_b97c3f1c:e fkgq03rk0bt1hb915dnyvd3vnfc - serversecret_6cc90f09 public."ServerSecret" [table] id int8 not null + serversecret_6cc90f09 public."ServerSecret" [table] id int8 not null - signedmarkrevocationentry_99c39721 public."SignedMarkRevocationEntry" [table] revision_id int8 not null smd_id text not null + signedmarkrevocationentry_99c39721 public."SignedMarkRevocationEntry" [table] revision_id int8 not null smd_id text not null - signedmarkrevocationlist_c5d968fb public."SignedMarkRevocationList" [table] revision_id bigserial not null auto-incremented + signedmarkrevocationlist_c5d968fb public."SignedMarkRevocationList" [table] revision_id bigserial not null auto-incremented - - signedmarkrevocationentry_99c39721:w->signedmarkrevocationlist_c5d968fb:e fk5ivlhvs3121yx2li5tqh54u4 + + signedmarkrevocationentry_99c39721:w->signedmarkrevocationlist_c5d968fb:e fk5ivlhvs3121yx2li5tqh54u4 - spec11threatmatch_a61228a6 public."Spec11ThreatMatch" [table] id bigserial not null auto-incremented check_date date not null registrar_id text not null tld text not null + spec11threatmatch_a61228a6 public."Spec11ThreatMatch" [table] id bigserial not null auto-incremented check_date date not null registrar_id text not null tld text not null - tmchcrl_d282355 public."TmchCrl" [table] id int8 not null + tmchcrl_d282355 public."TmchCrl" [table] id int8 not null - userupdatehistory_24efd476 public."UserUpdateHistory" [table] history_revision_id int8 not null email_address text not null history_acting_user text not null + userupdatehistory_24efd476 public."UserUpdateHistory" [table] history_revision_id int8 not null email_address text not null history_acting_user text not null @@ -1825,78 +1793,6 @@ td.section { transfer_losing_registrar_id (0..many)→ public."Registrar".registrar_id -
- -
-
- fk_contact_history_contact_repo_id - [foreign key, with no action] -
-
- - repo_id ←(0..many) public."ContactHistory".contact_repo_id - -
-
- -
-
- fk_domain_admin_contact - [foreign key, with no action] -
-
- - repo_id ←(0..many) public."Domain".admin_contact - -
-
- -
-
- fk_domain_billing_contact - [foreign key, with no action] -
-
- - repo_id ←(0..many) public."Domain".billing_contact - -
-
- -
-
- fk_domain_registrant_contact - [foreign key, with no action] -
-
- - repo_id ←(0..many) public."Domain".registrant_contact - -
-
- -
-
- fk_domain_tech_contact - [foreign key, with no action] -
-
- - repo_id ←(0..many) public."Domain".tech_contact - -
-
- -
-
- fk_poll_message_contact_repo_id - [foreign key, with no action] -
-
- - repo_id ←(0..many) public."PollMessage".contact_repo_id - -

 

@@ -1967,18 +1863,6 @@ td.section { - - fk_contact_history_contact_repo_id - [foreign key, with no action] - - - - contact_repo_id (0..many)→ public."Contact".repo_id - - - - - fk_contact_history_registrar_id [foreign key, with no action] @@ -1988,23 +1872,6 @@ td.section { history_registrar_id (0..many)→ public."Registrar".registrar_id - - - - - fk_poll_message_contact_history - [foreign key, with no action] - - - - contact_repo_id ←(0..many) public."PollMessage".contact_repo_id - - - - - history_revision_id ←(0..many) public."PollMessage".contact_history_revision_id - -

 

@@ -2343,30 +2210,6 @@ td.section { - - fk_domain_admin_contact - [foreign key, with no action] - - - - admin_contact (0..many)→ public."Contact".repo_id - - - - - - - fk_domain_billing_contact - [foreign key, with no action] - - - - billing_contact (0..many)→ public."Contact".repo_id - - - - - fk_domain_billing_recurrence_id [foreign key, with no action] @@ -2427,30 +2270,6 @@ td.section { - - fk_domain_registrant_contact - [foreign key, with no action] - - - - registrant_contact (0..many)→ public."Contact".repo_id - - - - - - - fk_domain_tech_contact - [foreign key, with no action] - - - - tech_contact (0..many)→ public."Contact".repo_id - - - - - fk_domain_tld [foreign key, with no action] @@ -3501,16 +3320,6 @@ td.section { registrar_id text not null - - - contact_repo_id - text - - - - contact_history_revision_id - int8 - domain_repo_id @@ -3573,18 +3382,6 @@ td.section { - - fk_poll_message_contact_repo_id - [foreign key, with no action] - - - - contact_repo_id (0..many)→ public."Contact".repo_id - - - - - fk_poll_message_domain_repo_id [foreign key, with no action] @@ -3645,23 +3442,6 @@ td.section { - - fk_poll_message_contact_history - [foreign key, with no action] - - - - contact_repo_id (0..many)→ public."ContactHistory".contact_repo_id - - - - - contact_history_revision_id (0..many)→ public."ContactHistory".history_revision_id - - - - - fk_poll_message_host_history [foreign key, with no action] diff --git a/db/src/main/resources/sql/er_diagram/full_er_diagram.html b/db/src/main/resources/sql/er_diagram/full_er_diagram.html index a08e3a24a..68e0afb8f 100644 --- a/db/src/main/resources/sql/er_diagram/full_er_diagram.html +++ b/db/src/main/resources/sql/er_diagram/full_er_diagram.html @@ -261,493 +261,461 @@ td.section { generated on - 2025-10-23 21:00:55 + 2025-10-27 19:43:45 last flyway file - V214__domain_unique_domain_name_active.sql + V217__drop_contact_fks_pollmessage.sql

 

 

- - - SchemaCrawler_Diagram generated by SchemaCrawler 16.27.1 generated on 2025-10-23 21:00:55 + + + SchemaCrawler_Diagram generated by SchemaCrawler 16.27.1 generated on 2025-10-27 19:43:45 - allocationtoken_a08ccbef public."AllocationToken" [table] token text not null update_timestamp timestamptz allowed_registrar_ids _text allowed_tlds _text creation_time timestamptz not null discount_fraction float8(17, 17) not null discount_premiums bool not null discount_years int4 not null domain_name text redemption_domain_repo_id text token_status_transitions hstore token_type text redemption_domain_history_id int8 renewal_price_behavior text not null registration_behavior text not null allowed_epp_actions _text renewal_price_amount numeric(19, 2) renewal_price_currency text discount_price_amount numeric(19, 2) discount_price_currency text + allocationtoken_a08ccbef public."AllocationToken" [table] token text not null update_timestamp timestamptz allowed_registrar_ids _text allowed_tlds _text creation_time timestamptz not null discount_fraction float8(17, 17) not null discount_premiums bool not null discount_years int4 not null domain_name text redemption_domain_repo_id text token_status_transitions hstore token_type text redemption_domain_history_id int8 renewal_price_behavior text not null registration_behavior text not null allowed_epp_actions _text renewal_price_amount numeric(19, 2) renewal_price_currency text discount_price_amount numeric(19, 2) discount_price_currency text - billingevent_a57d1815 public."BillingEvent" [table] billing_event_id int8 not null registrar_id text not null domain_history_revision_id int8 not null domain_repo_id text not null event_time timestamptz not null flags _text reason text not null domain_name text not null allocation_token text billing_time timestamptz cancellation_matching_billing_recurrence_id int8 cost_amount numeric(19, 2) cost_currency text period_years int4 synthetic_creation_time timestamptz recurrence_history_revision_id int8 + billingevent_a57d1815 public."BillingEvent" [table] billing_event_id int8 not null registrar_id text not null domain_history_revision_id int8 not null domain_repo_id text not null event_time timestamptz not null flags _text reason text not null domain_name text not null allocation_token text billing_time timestamptz cancellation_matching_billing_recurrence_id int8 cost_amount numeric(19, 2) cost_currency text period_years int4 synthetic_creation_time timestamptz recurrence_history_revision_id int8 - billingevent_a57d1815:w->allocationtoken_a08ccbef:e fk_billing_event_allocation_token + billingevent_a57d1815:w->allocationtoken_a08ccbef:e fk_billing_event_allocation_token - billingrecurrence_5fa2cb01 public."BillingRecurrence" [table] billing_recurrence_id int8 not null registrar_id text not null domain_history_revision_id int8 not null domain_repo_id text not null event_time timestamptz not null flags _text reason text not null domain_name text not null recurrence_end_time timestamptz recurrence_time_of_year text renewal_price_behavior text not null renewal_price_currency text renewal_price_amount numeric(19, 2) recurrence_last_expansion timestamptz not null + billingrecurrence_5fa2cb01 public."BillingRecurrence" [table] billing_recurrence_id int8 not null registrar_id text not null domain_history_revision_id int8 not null domain_repo_id text not null event_time timestamptz not null flags _text reason text not null domain_name text not null recurrence_end_time timestamptz recurrence_time_of_year text renewal_price_behavior text not null renewal_price_currency text renewal_price_amount numeric(19, 2) recurrence_last_expansion timestamptz not null - billingevent_a57d1815:w->billingrecurrence_5fa2cb01:e fk_billing_event_cancellation_matching_billing_recurrence_id + billingevent_a57d1815:w->billingrecurrence_5fa2cb01:e fk_billing_event_cancellation_matching_billing_recurrence_id - registrar_6e1503e3 public."Registrar" [table] registrar_id text not null allowed_tlds _text billing_account_map hstore block_premium_names bool not null client_certificate text client_certificate_hash text contacts_require_syncing bool not null creation_time timestamptz not null drive_folder_id text email_address text failover_client_certificate text failover_client_certificate_hash text fax_number text iana_identifier int8 icann_referral_email text i18n_address_city text i18n_address_country_code text i18n_address_state text i18n_address_street_line1 text i18n_address_street_line2 text i18n_address_street_line3 text i18n_address_zip text ip_address_allow_list _text last_certificate_update_time timestamptz last_update_time timestamptz not null localized_address_city text localized_address_country_code text localized_address_state text localized_address_street_line1 text localized_address_street_line2 text localized_address_street_line3 text localized_address_zip text password_hash text phone_number text phone_passcode text po_number text rdap_base_urls _text registrar_name text not null registry_lock_allowed bool not null password_salt text state text type text not null url text whois_server text last_expiring_cert_notification_sent_date timestamptz last_expiring_failover_cert_notification_sent_date timestamptz last_poc_verification_date timestamptz + registrar_6e1503e3 public."Registrar" [table] registrar_id text not null allowed_tlds _text billing_account_map hstore block_premium_names bool not null client_certificate text client_certificate_hash text contacts_require_syncing bool not null creation_time timestamptz not null drive_folder_id text email_address text failover_client_certificate text failover_client_certificate_hash text fax_number text iana_identifier int8 icann_referral_email text i18n_address_city text i18n_address_country_code text i18n_address_state text i18n_address_street_line1 text i18n_address_street_line2 text i18n_address_street_line3 text i18n_address_zip text ip_address_allow_list _text last_certificate_update_time timestamptz last_update_time timestamptz not null localized_address_city text localized_address_country_code text localized_address_state text localized_address_street_line1 text localized_address_street_line2 text localized_address_street_line3 text localized_address_zip text password_hash text phone_number text phone_passcode text po_number text rdap_base_urls _text registrar_name text not null registry_lock_allowed bool not null password_salt text state text type text not null url text whois_server text last_expiring_cert_notification_sent_date timestamptz last_expiring_failover_cert_notification_sent_date timestamptz last_poc_verification_date timestamptz - - billingevent_a57d1815:w->registrar_6e1503e3:e fk_billing_event_registrar_id + + billingevent_a57d1815:w->registrar_6e1503e3:e fk_billing_event_registrar_id - domain_6c51cffa public."Domain" [table] repo_id text not null creation_registrar_id text not null creation_time timestamptz not null current_sponsor_registrar_id text not null deletion_time timestamptz last_epp_update_registrar_id text last_epp_update_time timestamptz statuses _text auth_info_repo_id text auth_info_value text domain_name text idn_table_name text last_transfer_time timestamptz launch_notice_accepted_time timestamptz launch_notice_expiration_time timestamptz launch_notice_tcn_id text launch_notice_validator_id text registration_expiration_time timestamptz smd_id text subordinate_hosts _text tld text admin_contact text billing_contact text registrant_contact text tech_contact text transfer_poll_message_id_1 int8 transfer_poll_message_id_2 int8 transfer_billing_cancellation_id int8 transfer_billing_event_id int8 transfer_billing_recurrence_id int8 transfer_autorenew_poll_message_id int8 transfer_renew_period_unit text transfer_renew_period_value int4 transfer_client_txn_id text transfer_server_txn_id text transfer_registration_expiration_time timestamptz transfer_gaining_registrar_id text transfer_losing_registrar_id text transfer_pending_expiration_time timestamptz transfer_request_time timestamptz transfer_status text update_timestamp timestamptz billing_recurrence_id int8 autorenew_poll_message_id int8 deletion_poll_message_id int8 autorenew_end_time timestamptz transfer_autorenew_poll_message_history_id int8 transfer_history_entry_id int8 transfer_repo_id text transfer_poll_message_id_3 int8 current_package_token text lordn_phase text not null last_update_time_via_epp timestamptz + domain_6c51cffa public."Domain" [table] repo_id text not null creation_registrar_id text not null creation_time timestamptz not null current_sponsor_registrar_id text not null deletion_time timestamptz last_epp_update_registrar_id text last_epp_update_time timestamptz statuses _text auth_info_repo_id text auth_info_value text domain_name text idn_table_name text last_transfer_time timestamptz launch_notice_accepted_time timestamptz launch_notice_expiration_time timestamptz launch_notice_tcn_id text launch_notice_validator_id text registration_expiration_time timestamptz smd_id text subordinate_hosts _text tld text admin_contact text billing_contact text registrant_contact text tech_contact text transfer_poll_message_id_1 int8 transfer_poll_message_id_2 int8 transfer_billing_cancellation_id int8 transfer_billing_event_id int8 transfer_billing_recurrence_id int8 transfer_autorenew_poll_message_id int8 transfer_renew_period_unit text transfer_renew_period_value int4 transfer_client_txn_id text transfer_server_txn_id text transfer_registration_expiration_time timestamptz transfer_gaining_registrar_id text transfer_losing_registrar_id text transfer_pending_expiration_time timestamptz transfer_request_time timestamptz transfer_status text update_timestamp timestamptz billing_recurrence_id int8 autorenew_poll_message_id int8 deletion_poll_message_id int8 autorenew_end_time timestamptz transfer_autorenew_poll_message_history_id int8 transfer_history_entry_id int8 transfer_repo_id text transfer_poll_message_id_3 int8 current_package_token text lordn_phase text not null last_update_time_via_epp timestamptz - domain_6c51cffa:w->allocationtoken_a08ccbef:e fk_domain_current_package_token + domain_6c51cffa:w->allocationtoken_a08ccbef:e fk_domain_current_package_token - domain_6c51cffa:w->billingevent_a57d1815:e fk_domain_transfer_billing_event_id + domain_6c51cffa:w->billingevent_a57d1815:e fk_domain_transfer_billing_event_id - billingcancellation_6eedf614 public."BillingCancellation" [table] billing_cancellation_id int8 not null registrar_id text not null domain_history_revision_id int8 not null domain_repo_id text not null event_time timestamptz not null flags _text reason text not null domain_name text not null billing_time timestamptz billing_event_id int8 billing_recurrence_id int8 + billingcancellation_6eedf614 public."BillingCancellation" [table] billing_cancellation_id int8 not null registrar_id text not null domain_history_revision_id int8 not null domain_repo_id text not null event_time timestamptz not null flags _text reason text not null domain_name text not null billing_time timestamptz billing_event_id int8 billing_recurrence_id int8 - domain_6c51cffa:w->billingcancellation_6eedf614:e fk_domain_transfer_billing_cancellation_id + domain_6c51cffa:w->billingcancellation_6eedf614:e fk_domain_transfer_billing_cancellation_id - domain_6c51cffa:w->billingrecurrence_5fa2cb01:e fk_domain_billing_recurrence_id + domain_6c51cffa:w->billingrecurrence_5fa2cb01:e fk_domain_billing_recurrence_id - domain_6c51cffa:w->billingrecurrence_5fa2cb01:e fk_domain_transfer_billing_recurrence_id - - - - contact_8de8cb16 public."Contact" [table] repo_id text not null creation_registrar_id text not null creation_time timestamptz not null current_sponsor_registrar_id text not null deletion_time timestamptz last_epp_update_registrar_id text last_epp_update_time timestamptz statuses _text auth_info_repo_id text auth_info_value text contact_id text disclose_types_addr _text disclose_show_email bool disclose_show_fax bool disclose_mode_flag bool disclose_types_name _text disclose_types_org _text disclose_show_voice bool email text fax_phone_extension text fax_phone_number text addr_i18n_city text addr_i18n_country_code text addr_i18n_state text addr_i18n_street_line1 text addr_i18n_street_line2 text addr_i18n_street_line3 text addr_i18n_zip text addr_i18n_name text addr_i18n_org text addr_i18n_type text last_transfer_time timestamptz addr_local_city text addr_local_country_code text addr_local_state text addr_local_street_line1 text addr_local_street_line2 text addr_local_street_line3 text addr_local_zip text addr_local_name text addr_local_org text addr_local_type text search_name text voice_phone_extension text voice_phone_number text transfer_poll_message_id_1 int8 transfer_poll_message_id_2 int8 transfer_client_txn_id text transfer_server_txn_id text transfer_gaining_registrar_id text transfer_losing_registrar_id text transfer_pending_expiration_time timestamptz transfer_request_time timestamptz transfer_status text update_timestamp timestamptz transfer_history_entry_id int8 transfer_repo_id text transfer_poll_message_id_3 int8 last_update_time_via_epp timestamptz - - - - domain_6c51cffa:w->contact_8de8cb16:e fk_domain_admin_contact - - - - domain_6c51cffa:w->contact_8de8cb16:e fk_domain_billing_contact - - - - domain_6c51cffa:w->contact_8de8cb16:e fk_domain_registrant_contact - - - - domain_6c51cffa:w->contact_8de8cb16:e fk_domain_tech_contact + domain_6c51cffa:w->billingrecurrence_5fa2cb01:e fk_domain_transfer_billing_recurrence_id - - domain_6c51cffa:w->registrar_6e1503e3:e fk2jc69qyg2tv9hhnmif6oa1cx1 + + domain_6c51cffa:w->registrar_6e1503e3:e fk2jc69qyg2tv9hhnmif6oa1cx1 - - domain_6c51cffa:w->registrar_6e1503e3:e fk2u3srsfbei272093m3b3xwj23 + + domain_6c51cffa:w->registrar_6e1503e3:e fk2u3srsfbei272093m3b3xwj23 - - domain_6c51cffa:w->registrar_6e1503e3:e fkjc0r9r5y1lfbt4gpbqw4wsuvq + + domain_6c51cffa:w->registrar_6e1503e3:e fkjc0r9r5y1lfbt4gpbqw4wsuvq - - domain_6c51cffa:w->registrar_6e1503e3:e fk_domain_transfer_gaining_registrar_id + + domain_6c51cffa:w->registrar_6e1503e3:e fk_domain_transfer_gaining_registrar_id - - domain_6c51cffa:w->registrar_6e1503e3:e fk_domain_transfer_losing_registrar_id + + domain_6c51cffa:w->registrar_6e1503e3:e fk_domain_transfer_losing_registrar_id - tld_f1fa57e2 public."Tld" [table] tld_name text not null add_grace_period_length interval not null allowed_fully_qualified_host_names _text allowed_registrant_contact_ids _text anchor_tenant_add_grace_period_length interval not null auto_renew_grace_period_length interval not null automatic_transfer_length interval not null claims_period_end timestamptz not null creation_time timestamptz not null currency text not null dns_paused bool not null dns_writers _text not null drive_folder_id text eap_fee_schedule hstore not null escrow_enabled bool not null invoicing_enabled bool not null lordn_username text num_dns_publish_locks int4 not null pending_delete_length interval not null premium_list_name text pricing_engine_class_name text redemption_grace_period_length interval not null registry_lock_or_unlock_cost_amount numeric(19, 2) registry_lock_or_unlock_cost_currency text renew_billing_cost_transitions hstore not null renew_grace_period_length interval not null reserved_list_names _text restore_billing_cost_amount numeric(19, 2) restore_billing_cost_currency text roid_suffix text server_status_change_billing_cost_amount numeric(19, 2) server_status_change_billing_cost_currency text tld_state_transitions hstore not null tld_type text not null tld_unicode text not null transfer_grace_period_length interval not null default_promo_tokens _text dns_a_plus_aaaa_ttl interval dns_ds_ttl interval dns_ns_ttl interval idn_tables _text breakglass_mode bool not null bsa_enroll_start_time timestamptz create_billing_cost_transitions hstore not null expiry_access_period_enabled bool not null + tld_f1fa57e2 public."Tld" [table] tld_name text not null add_grace_period_length interval not null allowed_fully_qualified_host_names _text allowed_registrant_contact_ids _text anchor_tenant_add_grace_period_length interval not null auto_renew_grace_period_length interval not null automatic_transfer_length interval not null claims_period_end timestamptz not null creation_time timestamptz not null currency text not null dns_paused bool not null dns_writers _text not null drive_folder_id text eap_fee_schedule hstore not null escrow_enabled bool not null invoicing_enabled bool not null lordn_username text num_dns_publish_locks int4 not null pending_delete_length interval not null premium_list_name text pricing_engine_class_name text redemption_grace_period_length interval not null registry_lock_or_unlock_cost_amount numeric(19, 2) registry_lock_or_unlock_cost_currency text renew_billing_cost_transitions hstore not null renew_grace_period_length interval not null reserved_list_names _text restore_billing_cost_amount numeric(19, 2) restore_billing_cost_currency text roid_suffix text server_status_change_billing_cost_amount numeric(19, 2) server_status_change_billing_cost_currency text tld_state_transitions hstore not null tld_type text not null tld_unicode text not null transfer_grace_period_length interval not null default_promo_tokens _text dns_a_plus_aaaa_ttl interval dns_ds_ttl interval dns_ns_ttl interval idn_tables _text breakglass_mode bool not null bsa_enroll_start_time timestamptz create_billing_cost_transitions hstore not null expiry_access_period_enabled bool not null - - domain_6c51cffa:w->tld_f1fa57e2:e fk_domain_tld + + domain_6c51cffa:w->tld_f1fa57e2:e fk_domain_tld - domainhistory_a54cc226 public."DomainHistory" [table] history_revision_id int8 not null history_by_superuser bool not null history_registrar_id text history_modification_time timestamptz not null history_reason text history_requested_by_registrar bool history_client_transaction_id text history_server_transaction_id text history_type text not null history_xml_bytes bytea admin_contact text auth_info_repo_id text auth_info_value text billing_recurrence_id int8 autorenew_poll_message_id int8 billing_contact text deletion_poll_message_id int8 domain_name text idn_table_name text last_transfer_time timestamptz launch_notice_accepted_time timestamptz launch_notice_expiration_time timestamptz launch_notice_tcn_id text launch_notice_validator_id text registrant_contact text registration_expiration_time timestamptz smd_id text subordinate_hosts _text tech_contact text tld text transfer_billing_cancellation_id int8 transfer_billing_recurrence_id int8 transfer_autorenew_poll_message_id int8 transfer_billing_event_id int8 transfer_renew_period_unit text transfer_renew_period_value int4 transfer_registration_expiration_time timestamptz transfer_poll_message_id_1 int8 transfer_poll_message_id_2 int8 transfer_client_txn_id text transfer_server_txn_id text transfer_gaining_registrar_id text transfer_losing_registrar_id text transfer_pending_expiration_time timestamptz transfer_request_time timestamptz transfer_status text creation_registrar_id text creation_time timestamptz current_sponsor_registrar_id text deletion_time timestamptz last_epp_update_registrar_id text last_epp_update_time timestamptz statuses _text update_timestamp timestamptz domain_repo_id text not null autorenew_end_time timestamptz history_other_registrar_id text history_period_unit text history_period_value int4 autorenew_poll_message_history_id int8 transfer_autorenew_poll_message_history_id int8 transfer_history_entry_id int8 transfer_repo_id text transfer_poll_message_id_3 int8 current_package_token text lordn_phase text not null last_update_time_via_epp timestamptz + domainhistory_a54cc226 public."DomainHistory" [table] history_revision_id int8 not null history_by_superuser bool not null history_registrar_id text history_modification_time timestamptz not null history_reason text history_requested_by_registrar bool history_client_transaction_id text history_server_transaction_id text history_type text not null history_xml_bytes bytea admin_contact text auth_info_repo_id text auth_info_value text billing_recurrence_id int8 autorenew_poll_message_id int8 billing_contact text deletion_poll_message_id int8 domain_name text idn_table_name text last_transfer_time timestamptz launch_notice_accepted_time timestamptz launch_notice_expiration_time timestamptz launch_notice_tcn_id text launch_notice_validator_id text registrant_contact text registration_expiration_time timestamptz smd_id text subordinate_hosts _text tech_contact text tld text transfer_billing_cancellation_id int8 transfer_billing_recurrence_id int8 transfer_autorenew_poll_message_id int8 transfer_billing_event_id int8 transfer_renew_period_unit text transfer_renew_period_value int4 transfer_registration_expiration_time timestamptz transfer_poll_message_id_1 int8 transfer_poll_message_id_2 int8 transfer_client_txn_id text transfer_server_txn_id text transfer_gaining_registrar_id text transfer_losing_registrar_id text transfer_pending_expiration_time timestamptz transfer_request_time timestamptz transfer_status text creation_registrar_id text creation_time timestamptz current_sponsor_registrar_id text deletion_time timestamptz last_epp_update_registrar_id text last_epp_update_time timestamptz statuses _text update_timestamp timestamptz domain_repo_id text not null autorenew_end_time timestamptz history_other_registrar_id text history_period_unit text history_period_value int4 autorenew_poll_message_history_id int8 transfer_autorenew_poll_message_history_id int8 transfer_history_entry_id int8 transfer_repo_id text transfer_poll_message_id_3 int8 current_package_token text lordn_phase text not null last_update_time_via_epp timestamptz - domainhistory_a54cc226:w->allocationtoken_a08ccbef:e fk_domain_history_current_package_token + domainhistory_a54cc226:w->allocationtoken_a08ccbef:e fk_domain_history_current_package_token - - domainhistory_a54cc226:w->domain_6c51cffa:e fk_domain_history_domain_repo_id + + domainhistory_a54cc226:w->domain_6c51cffa:e fk_domain_history_domain_repo_id - - domainhistory_a54cc226:w->registrar_6e1503e3:e fk_domain_history_registrar_id + + domainhistory_a54cc226:w->registrar_6e1503e3:e fk_domain_history_registrar_id - billingcancellation_6eedf614:w->billingevent_a57d1815:e fk_billing_cancellation_billing_event_id + billingcancellation_6eedf614:w->billingevent_a57d1815:e fk_billing_cancellation_billing_event_id - billingcancellation_6eedf614:w->billingrecurrence_5fa2cb01:e fk_billing_cancellation_billing_recurrence_id + billingcancellation_6eedf614:w->billingrecurrence_5fa2cb01:e fk_billing_cancellation_billing_recurrence_id - - billingcancellation_6eedf614:w->registrar_6e1503e3:e fk_billing_cancellation_registrar_id + + billingcancellation_6eedf614:w->registrar_6e1503e3:e fk_billing_cancellation_registrar_id - graceperiod_cd3b2e8f public."GracePeriod" [table] grace_period_id int8 not null billing_event_id int8 billing_recurrence_id int8 registrar_id text not null domain_repo_id text not null expiration_time timestamptz not null type text not null + graceperiod_cd3b2e8f public."GracePeriod" [table] grace_period_id int8 not null billing_event_id int8 billing_recurrence_id int8 registrar_id text not null domain_repo_id text not null expiration_time timestamptz not null type text not null - graceperiod_cd3b2e8f:w->billingevent_a57d1815:e fk_grace_period_billing_event_id + graceperiod_cd3b2e8f:w->billingevent_a57d1815:e fk_grace_period_billing_event_id - - graceperiod_cd3b2e8f:w->domain_6c51cffa:e fk_grace_period_domain_repo_id + + graceperiod_cd3b2e8f:w->domain_6c51cffa:e fk_grace_period_domain_repo_id - graceperiod_cd3b2e8f:w->billingrecurrence_5fa2cb01:e fk_grace_period_billing_recurrence_id + graceperiod_cd3b2e8f:w->billingrecurrence_5fa2cb01:e fk_grace_period_billing_recurrence_id - - graceperiod_cd3b2e8f:w->registrar_6e1503e3:e fk_grace_period_registrar_id + + graceperiod_cd3b2e8f:w->registrar_6e1503e3:e fk_grace_period_registrar_id - - billingrecurrence_5fa2cb01:w->registrar_6e1503e3:e fk_billing_recurrence_registrar_id + + billingrecurrence_5fa2cb01:w->registrar_6e1503e3:e fk_billing_recurrence_registrar_id - bsadomainrefresh_c8f4c45d public."BsaDomainRefresh" [table] job_id bigserial not null auto-incremented creation_time timestamptz not null stage text not null update_timestamp timestamptz + bsadomainrefresh_c8f4c45d public."BsaDomainRefresh" [table] job_id bigserial not null auto-incremented creation_time timestamptz not null stage text not null update_timestamp timestamptz - bsadownload_98d031ce public."BsaDownload" [table] job_id bigserial not null auto-incremented block_list_checksums text not null creation_time timestamptz not null stage text not null update_timestamp timestamptz + bsadownload_98d031ce public."BsaDownload" [table] job_id bigserial not null auto-incremented block_list_checksums text not null creation_time timestamptz not null stage text not null update_timestamp timestamptz - bsalabel_2755e1da public."BsaLabel" [table] label text not null creation_time timestamptz not null + bsalabel_2755e1da public."BsaLabel" [table] label text not null creation_time timestamptz not null - bsaunblockabledomain_b739a38 public."BsaUnblockableDomain" [table] label text not null tld text not null creation_time timestamptz not null reason text not null + bsaunblockabledomain_b739a38 public."BsaUnblockableDomain" [table] label text not null tld text not null creation_time timestamptz not null reason text not null - bsaunblockabledomain_b739a38:w->bsalabel_2755e1da:e fkbsaunblockabledomainlabel + bsaunblockabledomain_b739a38:w->bsalabel_2755e1da:e fkbsaunblockabledomainlabel - claimsentry_105da9f1 public."ClaimsEntry" [table] revision_id int8 not null claim_key text not null domain_label text not null + claimsentry_105da9f1 public."ClaimsEntry" [table] revision_id int8 not null claim_key text not null domain_label text not null - claimslist_3d49bc2b public."ClaimsList" [table] revision_id bigserial not null auto-incremented creation_timestamp timestamptz not null tmdb_generation_time timestamptz not null + claimslist_3d49bc2b public."ClaimsList" [table] revision_id bigserial not null auto-incremented creation_timestamp timestamptz not null tmdb_generation_time timestamptz not null - claimsentry_105da9f1:w->claimslist_3d49bc2b:e fk6sc6at5hedffc0nhdcab6ivuq + claimsentry_105da9f1:w->claimslist_3d49bc2b:e fk6sc6at5hedffc0nhdcab6ivuq - consoleeppactionhistory_bcc2a2c6 public."ConsoleEppActionHistory" [table] history_revision_id int8 not null history_modification_time timestamptz not null history_method text not null history_request_body text history_type text not null history_url text not null history_entry_class text not null repo_id text not null revision_id int8 not null history_acting_user text not null + consoleeppactionhistory_bcc2a2c6 public."ConsoleEppActionHistory" [table] history_revision_id int8 not null history_modification_time timestamptz not null history_method text not null history_request_body text history_type text not null history_url text not null history_entry_class text not null repo_id text not null revision_id int8 not null history_acting_user text not null - consoleupdatehistory_5237b2aa public."ConsoleUpdateHistory" [table] revision_id int8 not null modification_time timestamptz not null "method" text not null type text not null url text not null description text acting_user text not null + consoleupdatehistory_5237b2aa public."ConsoleUpdateHistory" [table] revision_id int8 not null modification_time timestamptz not null "method" text not null type text not null url text not null description text acting_user text not null - user_f2216f01 public."User" [table] email_address text not null registry_lock_password_hash text registry_lock_password_salt text global_role text not null is_admin bool not null registrar_roles hstore not null update_timestamp timestamptz registry_lock_email_address text + user_f2216f01 public."User" [table] email_address text not null registry_lock_password_hash text registry_lock_password_salt text global_role text not null is_admin bool not null registrar_roles hstore not null update_timestamp timestamptz registry_lock_email_address text - - consoleupdatehistory_5237b2aa:w->user_f2216f01:e fk_console_update_history_acting_user + + consoleupdatehistory_5237b2aa:w->user_f2216f01:e fk_console_update_history_acting_user + + + + contact_8de8cb16 public."Contact" [table] repo_id text not null creation_registrar_id text not null creation_time timestamptz not null current_sponsor_registrar_id text not null deletion_time timestamptz last_epp_update_registrar_id text last_epp_update_time timestamptz statuses _text auth_info_repo_id text auth_info_value text contact_id text disclose_types_addr _text disclose_show_email bool disclose_show_fax bool disclose_mode_flag bool disclose_types_name _text disclose_types_org _text disclose_show_voice bool email text fax_phone_extension text fax_phone_number text addr_i18n_city text addr_i18n_country_code text addr_i18n_state text addr_i18n_street_line1 text addr_i18n_street_line2 text addr_i18n_street_line3 text addr_i18n_zip text addr_i18n_name text addr_i18n_org text addr_i18n_type text last_transfer_time timestamptz addr_local_city text addr_local_country_code text addr_local_state text addr_local_street_line1 text addr_local_street_line2 text addr_local_street_line3 text addr_local_zip text addr_local_name text addr_local_org text addr_local_type text search_name text voice_phone_extension text voice_phone_number text transfer_poll_message_id_1 int8 transfer_poll_message_id_2 int8 transfer_client_txn_id text transfer_server_txn_id text transfer_gaining_registrar_id text transfer_losing_registrar_id text transfer_pending_expiration_time timestamptz transfer_request_time timestamptz transfer_status text update_timestamp timestamptz transfer_history_entry_id int8 transfer_repo_id text transfer_poll_message_id_3 int8 last_update_time_via_epp timestamptz - - contact_8de8cb16:w->registrar_6e1503e3:e fk1sfyj7o7954prbn1exk7lpnoe + + contact_8de8cb16:w->registrar_6e1503e3:e fk1sfyj7o7954prbn1exk7lpnoe - - contact_8de8cb16:w->registrar_6e1503e3:e fk93c185fx7chn68uv7nl6uv2s0 + + contact_8de8cb16:w->registrar_6e1503e3:e fk93c185fx7chn68uv7nl6uv2s0 - - contact_8de8cb16:w->registrar_6e1503e3:e fkmb7tdiv85863134w1wogtxrb2 + + contact_8de8cb16:w->registrar_6e1503e3:e fkmb7tdiv85863134w1wogtxrb2 - - contact_8de8cb16:w->registrar_6e1503e3:e fk_contact_transfer_gaining_registrar_id + + contact_8de8cb16:w->registrar_6e1503e3:e fk_contact_transfer_gaining_registrar_id - - contact_8de8cb16:w->registrar_6e1503e3:e fk_contact_transfer_losing_registrar_id + + contact_8de8cb16:w->registrar_6e1503e3:e fk_contact_transfer_losing_registrar_id - contacthistory_d2964f8a public."ContactHistory" [table] history_revision_id int8 not null history_by_superuser bool not null history_registrar_id text history_modification_time timestamptz not null history_reason text history_requested_by_registrar bool history_client_transaction_id text history_server_transaction_id text history_type text not null history_xml_bytes bytea auth_info_repo_id text auth_info_value text contact_id text disclose_types_addr _text disclose_show_email bool disclose_show_fax bool disclose_mode_flag bool disclose_types_name _text disclose_types_org _text disclose_show_voice bool email text fax_phone_extension text fax_phone_number text addr_i18n_city text addr_i18n_country_code text addr_i18n_state text addr_i18n_street_line1 text addr_i18n_street_line2 text addr_i18n_street_line3 text addr_i18n_zip text addr_i18n_name text addr_i18n_org text addr_i18n_type text last_transfer_time timestamptz addr_local_city text addr_local_country_code text addr_local_state text addr_local_street_line1 text addr_local_street_line2 text addr_local_street_line3 text addr_local_zip text addr_local_name text addr_local_org text addr_local_type text search_name text transfer_poll_message_id_1 int8 transfer_poll_message_id_2 int8 transfer_client_txn_id text transfer_server_txn_id text transfer_gaining_registrar_id text transfer_losing_registrar_id text transfer_pending_expiration_time timestamptz transfer_request_time timestamptz transfer_status text voice_phone_extension text voice_phone_number text creation_registrar_id text creation_time timestamptz current_sponsor_registrar_id text deletion_time timestamptz last_epp_update_registrar_id text last_epp_update_time timestamptz statuses _text contact_repo_id text not null update_timestamp timestamptz transfer_history_entry_id int8 transfer_repo_id text transfer_poll_message_id_3 int8 last_update_time_via_epp timestamptz - - - - contacthistory_d2964f8a:w->contact_8de8cb16:e fk_contact_history_contact_repo_id + contacthistory_d2964f8a public."ContactHistory" [table] history_revision_id int8 not null history_by_superuser bool not null history_registrar_id text history_modification_time timestamptz not null history_reason text history_requested_by_registrar bool history_client_transaction_id text history_server_transaction_id text history_type text not null history_xml_bytes bytea auth_info_repo_id text auth_info_value text contact_id text disclose_types_addr _text disclose_show_email bool disclose_show_fax bool disclose_mode_flag bool disclose_types_name _text disclose_types_org _text disclose_show_voice bool email text fax_phone_extension text fax_phone_number text addr_i18n_city text addr_i18n_country_code text addr_i18n_state text addr_i18n_street_line1 text addr_i18n_street_line2 text addr_i18n_street_line3 text addr_i18n_zip text addr_i18n_name text addr_i18n_org text addr_i18n_type text last_transfer_time timestamptz addr_local_city text addr_local_country_code text addr_local_state text addr_local_street_line1 text addr_local_street_line2 text addr_local_street_line3 text addr_local_zip text addr_local_name text addr_local_org text addr_local_type text search_name text transfer_poll_message_id_1 int8 transfer_poll_message_id_2 int8 transfer_client_txn_id text transfer_server_txn_id text transfer_gaining_registrar_id text transfer_losing_registrar_id text transfer_pending_expiration_time timestamptz transfer_request_time timestamptz transfer_status text voice_phone_extension text voice_phone_number text creation_registrar_id text creation_time timestamptz current_sponsor_registrar_id text deletion_time timestamptz last_epp_update_registrar_id text last_epp_update_time timestamptz statuses _text contact_repo_id text not null update_timestamp timestamptz transfer_history_entry_id int8 transfer_repo_id text transfer_poll_message_id_3 int8 last_update_time_via_epp timestamptz - - contacthistory_d2964f8a:w->registrar_6e1503e3:e fk_contact_history_registrar_id + + contacthistory_d2964f8a:w->registrar_6e1503e3:e fk_contact_history_registrar_id - + - pollmessage_614a523e public."PollMessage" [table] type text not null poll_message_id int8 not null registrar_id text not null contact_repo_id text contact_history_revision_id int8 domain_repo_id text domain_history_revision_id int8 event_time timestamptz not null host_repo_id text host_history_revision_id int8 message text transfer_response_contact_id text transfer_response_domain_expiration_time timestamptz transfer_response_domain_name text pending_action_response_action_result bool pending_action_response_name_or_id text pending_action_response_processed_date timestamptz pending_action_response_client_txn_id text pending_action_response_server_txn_id text transfer_response_gaining_registrar_id text transfer_response_losing_registrar_id text transfer_response_pending_transfer_expiration_time timestamptz transfer_response_transfer_request_time timestamptz transfer_response_transfer_status text autorenew_end_time timestamptz autorenew_domain_name text transfer_response_host_id text + cursor_6af40e8c public."Cursor" [table] "scope" text not null type text not null cursor_time timestamptz not null last_update_time timestamptz not null - - - pollmessage_614a523e:w->domain_6c51cffa:e fk_poll_message_domain_repo_id + + + delegationsignerdata_e542a872 public."DelegationSignerData" [table] domain_repo_id text not null key_tag int4 not null algorithm int4 not null digest bytea not null digest_type int4 not null - - - pollmessage_614a523e:w->contact_8de8cb16:e fk_poll_message_contact_repo_id + + + delegationsignerdata_e542a872:w->domain_6c51cffa:e fktr24j9v14ph2mfuw2gsmt12kq - - - pollmessage_614a523e:w->contacthistory_d2964f8a:e fk_poll_message_contact_history + + + dnsrefreshrequest_4e6affb3 public."DnsRefreshRequest" [table] id bigserial not null auto-incremented name text not null request_time timestamptz not null tld text not null type text not null last_process_time timestamptz not null - - - pollmessage_614a523e:w->contacthistory_d2964f8a:e fk_poll_message_contact_history + + + domainhost_1ea127c2 public."DomainHost" [table] domain_repo_id text not null host_repo_id text + + + + domainhost_1ea127c2:w->domain_6c51cffa:e fkfmi7bdink53swivs390m2btxg + + host_f21b78de public."Host" [table] repo_id text not null creation_registrar_id text creation_time timestamptz current_sponsor_registrar_id text deletion_time timestamptz last_epp_update_registrar_id text last_epp_update_time timestamptz statuses _text host_name text last_superordinate_change timestamptz last_transfer_time timestamptz superordinate_domain text inet_addresses _text update_timestamp timestamptz transfer_poll_message_id_3 int8 last_update_time_via_epp timestamptz + + + + domainhost_1ea127c2:w->host_f21b78de:e fk_domainhost_host_valid + + + + host_f21b78de:w->domain_6c51cffa:e fk_host_superordinate_domain + + + + host_f21b78de:w->registrar_6e1503e3:e fk_host_creation_registrar_id + + + + host_f21b78de:w->registrar_6e1503e3:e fk_host_current_sponsor_registrar_id + + + + host_f21b78de:w->registrar_6e1503e3:e fk_host_last_epp_update_registrar_id + + - host_f21b78de public."Host" [table] repo_id text not null creation_registrar_id text creation_time timestamptz current_sponsor_registrar_id text deletion_time timestamptz last_epp_update_registrar_id text last_epp_update_time timestamptz statuses _text host_name text last_superordinate_change timestamptz last_transfer_time timestamptz superordinate_domain text inet_addresses _text update_timestamp timestamptz transfer_poll_message_id_3 int8 last_update_time_via_epp timestamptz + pollmessage_614a523e public."PollMessage" [table] type text not null poll_message_id int8 not null registrar_id text not null contact_repo_id text contact_history_revision_id int8 domain_repo_id text domain_history_revision_id int8 event_time timestamptz not null host_repo_id text host_history_revision_id int8 message text transfer_response_contact_id text transfer_response_domain_expiration_time timestamptz transfer_response_domain_name text pending_action_response_action_result bool pending_action_response_name_or_id text pending_action_response_processed_date timestamptz pending_action_response_client_txn_id text pending_action_response_server_txn_id text transfer_response_gaining_registrar_id text transfer_response_losing_registrar_id text transfer_response_pending_transfer_expiration_time timestamptz transfer_response_transfer_request_time timestamptz transfer_response_transfer_status text autorenew_end_time timestamptz autorenew_domain_name text transfer_response_host_id text + + + + pollmessage_614a523e:w->domain_6c51cffa:e fk_poll_message_domain_repo_id - - pollmessage_614a523e:w->host_f21b78de:e fk_poll_message_host_repo_id + + pollmessage_614a523e:w->host_f21b78de:e fk_poll_message_host_repo_id - hosthistory_56210c2 public."HostHistory" [table] history_revision_id int8 not null history_by_superuser bool not null history_registrar_id text not null history_modification_time timestamptz not null history_reason text history_requested_by_registrar bool history_client_transaction_id text history_server_transaction_id text history_type text not null history_xml_bytes bytea host_name text inet_addresses _text last_superordinate_change timestamptz last_transfer_time timestamptz superordinate_domain text creation_registrar_id text creation_time timestamptz current_sponsor_registrar_id text deletion_time timestamptz last_epp_update_registrar_id text last_epp_update_time timestamptz statuses _text host_repo_id text not null update_timestamp timestamptz transfer_poll_message_id_3 int8 last_update_time_via_epp timestamptz + hosthistory_56210c2 public."HostHistory" [table] history_revision_id int8 not null history_by_superuser bool not null history_registrar_id text not null history_modification_time timestamptz not null history_reason text history_requested_by_registrar bool history_client_transaction_id text history_server_transaction_id text history_type text not null history_xml_bytes bytea host_name text inet_addresses _text last_superordinate_change timestamptz last_transfer_time timestamptz superordinate_domain text creation_registrar_id text creation_time timestamptz current_sponsor_registrar_id text deletion_time timestamptz last_epp_update_registrar_id text last_epp_update_time timestamptz statuses _text host_repo_id text not null update_timestamp timestamptz transfer_poll_message_id_3 int8 last_update_time_via_epp timestamptz - - pollmessage_614a523e:w->hosthistory_56210c2:e fk_poll_message_host_history + + pollmessage_614a523e:w->hosthistory_56210c2:e fk_poll_message_host_history - - pollmessage_614a523e:w->hosthistory_56210c2:e fk_poll_message_host_history - - - - pollmessage_614a523e:w->registrar_6e1503e3:e fk_poll_message_registrar_id - - - - pollmessage_614a523e:w->registrar_6e1503e3:e fk_poll_message_transfer_response_gaining_registrar_id - - - - pollmessage_614a523e:w->registrar_6e1503e3:e fk_poll_message_transfer_response_losing_registrar_id - - - - cursor_6af40e8c public."Cursor" [table] "scope" text not null type text not null cursor_time timestamptz not null last_update_time timestamptz not null - - - - delegationsignerdata_e542a872 public."DelegationSignerData" [table] domain_repo_id text not null key_tag int4 not null algorithm int4 not null digest bytea not null digest_type int4 not null - - - - delegationsignerdata_e542a872:w->domain_6c51cffa:e fktr24j9v14ph2mfuw2gsmt12kq - - - - dnsrefreshrequest_4e6affb3 public."DnsRefreshRequest" [table] id bigserial not null auto-incremented name text not null request_time timestamptz not null tld text not null type text not null last_process_time timestamptz not null - - - - domainhost_1ea127c2 public."DomainHost" [table] domain_repo_id text not null host_repo_id text - - - - domainhost_1ea127c2:w->domain_6c51cffa:e fkfmi7bdink53swivs390m2btxg - - - - domainhost_1ea127c2:w->host_f21b78de:e fk_domainhost_host_valid - - - host_f21b78de:w->domain_6c51cffa:e fk_host_superordinate_domain + pollmessage_614a523e:w->hosthistory_56210c2:e fk_poll_message_host_history - - - host_f21b78de:w->registrar_6e1503e3:e fk_host_creation_registrar_id + + + pollmessage_614a523e:w->registrar_6e1503e3:e fk_poll_message_registrar_id - - - host_f21b78de:w->registrar_6e1503e3:e fk_host_current_sponsor_registrar_id + + + pollmessage_614a523e:w->registrar_6e1503e3:e fk_poll_message_transfer_response_gaining_registrar_id - - - host_f21b78de:w->registrar_6e1503e3:e fk_host_last_epp_update_registrar_id + + + pollmessage_614a523e:w->registrar_6e1503e3:e fk_poll_message_transfer_response_losing_registrar_id - domaindsdatahistory_995b060d public."DomainDsDataHistory" [table] ds_data_history_revision_id int8 not null algorithm int4 not null digest bytea not null digest_type int4 not null domain_history_revision_id int8 not null key_tag int4 not null domain_repo_id text + domaindsdatahistory_995b060d public."DomainDsDataHistory" [table] ds_data_history_revision_id int8 not null algorithm int4 not null digest bytea not null digest_type int4 not null domain_history_revision_id int8 not null key_tag int4 not null domain_repo_id text - domainhistoryhost_9f3f23ee public."DomainHistoryHost" [table] domain_history_history_revision_id int8 not null host_repo_id text domain_history_domain_repo_id text not null + domainhistoryhost_9f3f23ee public."DomainHistoryHost" [table] domain_history_history_revision_id int8 not null host_repo_id text domain_history_domain_repo_id text not null - - domainhistoryhost_9f3f23ee:w->domainhistory_a54cc226:e fka9woh3hu8gx5x0vly6bai327n + + domainhistoryhost_9f3f23ee:w->domainhistory_a54cc226:e fka9woh3hu8gx5x0vly6bai327n - - domainhistoryhost_9f3f23ee:w->domainhistory_a54cc226:e fka9woh3hu8gx5x0vly6bai327n + + domainhistoryhost_9f3f23ee:w->domainhistory_a54cc226:e fka9woh3hu8gx5x0vly6bai327n - domaintransactionrecord_6e77ff61 public."DomainTransactionRecord" [table] id bigserial not null auto-incremented report_amount int4 not null report_field text not null reporting_time timestamptz not null tld text not null domain_repo_id text history_revision_id int8 + domaintransactionrecord_6e77ff61 public."DomainTransactionRecord" [table] id bigserial not null auto-incremented report_amount int4 not null report_field text not null reporting_time timestamptz not null tld text not null domain_repo_id text history_revision_id int8 - - domaintransactionrecord_6e77ff61:w->tld_f1fa57e2:e fk_domain_transaction_record_tld + + domaintransactionrecord_6e77ff61:w->tld_f1fa57e2:e fk_domain_transaction_record_tld - featureflag_3ee43a78 public."FeatureFlag" [table] feature_name text not null status hstore not null + featureflag_3ee43a78 public."FeatureFlag" [table] feature_name text not null status hstore not null - graceperiodhistory_40ccc1f1 public."GracePeriodHistory" [table] grace_period_history_revision_id int8 not null billing_event_id int8 billing_recurrence_id int8 registrar_id text not null domain_repo_id text not null expiration_time timestamptz not null type text not null domain_history_revision_id int8 grace_period_id int8 not null + graceperiodhistory_40ccc1f1 public."GracePeriodHistory" [table] grace_period_history_revision_id int8 not null billing_event_id int8 billing_recurrence_id int8 registrar_id text not null domain_repo_id text not null expiration_time timestamptz not null type text not null domain_history_revision_id int8 grace_period_id int8 not null - - hosthistory_56210c2:w->host_f21b78de:e fk_hosthistory_host + + hosthistory_56210c2:w->host_f21b78de:e fk_hosthistory_host - - hosthistory_56210c2:w->registrar_6e1503e3:e fk_history_registrar_id + + hosthistory_56210c2:w->registrar_6e1503e3:e fk_history_registrar_id - lock_f21d4861 public."Lock" [table] resource_name text not null "scope" text not null acquired_time timestamptz not null expiration_time timestamptz not null + lock_f21d4861 public."Lock" [table] resource_name text not null "scope" text not null acquired_time timestamptz not null expiration_time timestamptz not null - packagepromotion_56aa33 public."PackagePromotion" [table] package_promotion_id bigserial not null auto-incremented last_notification_sent timestamptz max_creates int4 not null max_domains int4 not null next_billing_date timestamptz not null package_price_amount numeric(19, 2) not null package_price_currency text not null token text not null + packagepromotion_56aa33 public."PackagePromotion" [table] package_promotion_id bigserial not null auto-incremented last_notification_sent timestamptz max_creates int4 not null max_domains int4 not null next_billing_date timestamptz not null package_price_amount numeric(19, 2) not null package_price_currency text not null token text not null - passwordresetrequest_8484e7b1 public."PasswordResetRequest" [table] type text not null request_time timestamptz not null requester text not null fulfillment_time timestamptz destination_email text not null verification_code text not null registrar_id text not null + passwordresetrequest_8484e7b1 public."PasswordResetRequest" [table] type text not null request_time timestamptz not null requester text not null fulfillment_time timestamptz destination_email text not null verification_code text not null registrar_id text not null - premiumentry_b0060b91 public."PremiumEntry" [table] revision_id int8 not null price numeric(19, 2) not null domain_label text not null + premiumentry_b0060b91 public."PremiumEntry" [table] revision_id int8 not null price numeric(19, 2) not null domain_label text not null - premiumlist_7c3ea68b public."PremiumList" [table] revision_id bigserial not null auto-incremented creation_timestamp timestamptz name text not null bloom_filter bytea not null currency text not null + premiumlist_7c3ea68b public."PremiumList" [table] revision_id bigserial not null auto-incremented creation_timestamp timestamptz name text not null bloom_filter bytea not null currency text not null - - premiumentry_b0060b91:w->premiumlist_7c3ea68b:e fko0gw90lpo1tuee56l0nb6y6g5 + + premiumentry_b0060b91:w->premiumlist_7c3ea68b:e fko0gw90lpo1tuee56l0nb6y6g5 - rderevision_83396864 public."RdeRevision" [table] tld text not null mode text not null "date" date not null update_timestamp timestamptz revision int4 not null + rderevision_83396864 public."RdeRevision" [table] tld text not null mode text not null "date" date not null update_timestamp timestamptz revision int4 not null - registrarpoc_ab47054d public."RegistrarPoc" [table] email_address text not null allowed_to_set_registry_lock_password bool fax_number text name text phone_number text registry_lock_password_hash text registry_lock_password_salt text types _text visible_in_domain_whois_as_abuse bool not null visible_in_whois_as_admin bool not null visible_in_whois_as_tech bool not null registry_lock_email_address text registrar_id text not null id bigserial not null auto-incremented + registrarpoc_ab47054d public."RegistrarPoc" [table] email_address text not null allowed_to_set_registry_lock_password bool fax_number text name text phone_number text registry_lock_password_hash text registry_lock_password_salt text types _text visible_in_domain_whois_as_abuse bool not null visible_in_whois_as_admin bool not null visible_in_whois_as_tech bool not null registry_lock_email_address text registrar_id text not null id bigserial not null auto-incremented - - registrarpoc_ab47054d:w->registrar_6e1503e3:e fk_registrar_poc_registrar_id + + registrarpoc_ab47054d:w->registrar_6e1503e3:e fk_registrar_poc_registrar_id - registrarupdatehistory_8a38bed4 public."RegistrarUpdateHistory" [table] history_revision_id int8 not null history_modification_time timestamptz not null history_method text not null history_request_body text history_type text not null history_url text not null allowed_tlds _text billing_account_map hstore block_premium_names bool not null client_certificate text client_certificate_hash text contacts_require_syncing bool not null creation_time timestamptz not null drive_folder_id text email_address text failover_client_certificate text failover_client_certificate_hash text fax_number text iana_identifier int8 icann_referral_email text i18n_address_city text i18n_address_country_code text i18n_address_state text i18n_address_street_line1 text i18n_address_street_line2 text i18n_address_street_line3 text i18n_address_zip text ip_address_allow_list _text last_certificate_update_time timestamptz last_expiring_cert_notification_sent_date timestamptz last_expiring_failover_cert_notification_sent_date timestamptz localized_address_city text localized_address_country_code text localized_address_state text localized_address_street_line1 text localized_address_street_line2 text localized_address_street_line3 text localized_address_zip text password_hash text phone_number text phone_passcode text po_number text rdap_base_urls _text registrar_name text not null registry_lock_allowed bool not null password_salt text state text type text not null url text whois_server text update_timestamp timestamptz registrar_id text not null history_acting_user text not null + registrarupdatehistory_8a38bed4 public."RegistrarUpdateHistory" [table] history_revision_id int8 not null history_modification_time timestamptz not null history_method text not null history_request_body text history_type text not null history_url text not null allowed_tlds _text billing_account_map hstore block_premium_names bool not null client_certificate text client_certificate_hash text contacts_require_syncing bool not null creation_time timestamptz not null drive_folder_id text email_address text failover_client_certificate text failover_client_certificate_hash text fax_number text iana_identifier int8 icann_referral_email text i18n_address_city text i18n_address_country_code text i18n_address_state text i18n_address_street_line1 text i18n_address_street_line2 text i18n_address_street_line3 text i18n_address_zip text ip_address_allow_list _text last_certificate_update_time timestamptz last_expiring_cert_notification_sent_date timestamptz last_expiring_failover_cert_notification_sent_date timestamptz localized_address_city text localized_address_country_code text localized_address_state text localized_address_street_line1 text localized_address_street_line2 text localized_address_street_line3 text localized_address_zip text password_hash text phone_number text phone_passcode text po_number text rdap_base_urls _text registrar_name text not null registry_lock_allowed bool not null password_salt text state text type text not null url text whois_server text update_timestamp timestamptz registrar_id text not null history_acting_user text not null - - registrarupdatehistory_8a38bed4:w->registrar_6e1503e3:e fkregistrarupdatehistoryregistrarid + + registrarupdatehistory_8a38bed4:w->registrar_6e1503e3:e fkregistrarupdatehistoryregistrarid - registrarpocupdatehistory_31e5d9aa public."RegistrarPocUpdateHistory" [table] history_revision_id int8 not null history_modification_time timestamptz not null history_method text not null history_request_body text history_type text not null history_url text not null email_address text not null registrar_id text not null allowed_to_set_registry_lock_password bool not null fax_number text login_email_address text name text phone_number text registry_lock_email_address text registry_lock_password_hash text registry_lock_password_salt text types _text visible_in_domain_whois_as_abuse bool not null visible_in_whois_as_admin bool not null visible_in_whois_as_tech bool not null history_acting_user text not null + registrarpocupdatehistory_31e5d9aa public."RegistrarPocUpdateHistory" [table] history_revision_id int8 not null history_modification_time timestamptz not null history_method text not null history_request_body text history_type text not null history_url text not null email_address text not null registrar_id text not null allowed_to_set_registry_lock_password bool not null fax_number text login_email_address text name text phone_number text registry_lock_email_address text registry_lock_password_hash text registry_lock_password_salt text types _text visible_in_domain_whois_as_abuse bool not null visible_in_whois_as_admin bool not null visible_in_whois_as_tech bool not null history_acting_user text not null - - registrarpocupdatehistory_31e5d9aa:w->registrarpoc_ab47054d:e fkregistrarpocupdatehistoryemailaddress + + registrarpocupdatehistory_31e5d9aa:w->registrarpoc_ab47054d:e fkregistrarpocupdatehistoryemailaddress - - registrarpocupdatehistory_31e5d9aa:w->registrarpoc_ab47054d:e fkregistrarpocupdatehistoryemailaddress + + registrarpocupdatehistory_31e5d9aa:w->registrarpoc_ab47054d:e fkregistrarpocupdatehistoryemailaddress - registrylock_ac88663e public."RegistryLock" [table] revision_id bigserial not null auto-incremented lock_completion_time timestamptz lock_request_time timestamptz not null domain_name text not null is_superuser bool not null registrar_id text not null registrar_poc_id text repo_id text not null verification_code text not null unlock_request_time timestamptz unlock_completion_time timestamptz last_update_time timestamptz not null relock_revision_id int8 relock_duration interval + registrylock_ac88663e public."RegistryLock" [table] revision_id bigserial not null auto-incremented lock_completion_time timestamptz lock_request_time timestamptz not null domain_name text not null is_superuser bool not null registrar_id text not null registrar_poc_id text repo_id text not null verification_code text not null unlock_request_time timestamptz unlock_completion_time timestamptz last_update_time timestamptz not null relock_revision_id int8 relock_duration interval - - registrylock_ac88663e:w->registrylock_ac88663e:e fk2lhcwpxlnqijr96irylrh1707 + + registrylock_ac88663e:w->registrylock_ac88663e:e fk2lhcwpxlnqijr96irylrh1707 - reservedentry_1a7b8520 public."ReservedEntry" [table] revision_id int8 not null comment text reservation_type int4 not null domain_label text not null + reservedentry_1a7b8520 public."ReservedEntry" [table] revision_id int8 not null comment text reservation_type int4 not null domain_label text not null - reservedlist_b97c3f1c public."ReservedList" [table] revision_id bigserial not null auto-incremented creation_timestamp timestamptz not null name text not null + reservedlist_b97c3f1c public."ReservedList" [table] revision_id bigserial not null auto-incremented creation_timestamp timestamptz not null name text not null - - reservedentry_1a7b8520:w->reservedlist_b97c3f1c:e fkgq03rk0bt1hb915dnyvd3vnfc + + reservedentry_1a7b8520:w->reservedlist_b97c3f1c:e fkgq03rk0bt1hb915dnyvd3vnfc - serversecret_6cc90f09 public."ServerSecret" [table] secret uuid not null id int8 not null + serversecret_6cc90f09 public."ServerSecret" [table] secret uuid not null id int8 not null - signedmarkrevocationentry_99c39721 public."SignedMarkRevocationEntry" [table] revision_id int8 not null revocation_time timestamptz not null smd_id text not null + signedmarkrevocationentry_99c39721 public."SignedMarkRevocationEntry" [table] revision_id int8 not null revocation_time timestamptz not null smd_id text not null - signedmarkrevocationlist_c5d968fb public."SignedMarkRevocationList" [table] revision_id bigserial not null auto-incremented creation_time timestamptz + signedmarkrevocationlist_c5d968fb public."SignedMarkRevocationList" [table] revision_id bigserial not null auto-incremented creation_time timestamptz - - signedmarkrevocationentry_99c39721:w->signedmarkrevocationlist_c5d968fb:e fk5ivlhvs3121yx2li5tqh54u4 + + signedmarkrevocationentry_99c39721:w->signedmarkrevocationlist_c5d968fb:e fk5ivlhvs3121yx2li5tqh54u4 - spec11threatmatch_a61228a6 public."Spec11ThreatMatch" [table] id bigserial not null auto-incremented check_date date not null domain_name text not null domain_repo_id text not null registrar_id text not null threat_types _text not null tld text not null + spec11threatmatch_a61228a6 public."Spec11ThreatMatch" [table] id bigserial not null auto-incremented check_date date not null domain_name text not null domain_repo_id text not null registrar_id text not null threat_types _text not null tld text not null - tmchcrl_d282355 public."TmchCrl" [table] certificate_revocations text not null update_timestamp timestamptz not null url text not null id int8 not null + tmchcrl_d282355 public."TmchCrl" [table] certificate_revocations text not null update_timestamp timestamptz not null url text not null id int8 not null - userupdatehistory_24efd476 public."UserUpdateHistory" [table] history_revision_id int8 not null history_modification_time timestamptz not null history_method text not null history_request_body text history_type text not null history_url text not null email_address text not null registry_lock_password_hash text registry_lock_password_salt text global_role text not null is_admin bool not null registrar_roles hstore update_timestamp timestamptz history_acting_user text not null registry_lock_email_address text + userupdatehistory_24efd476 public."UserUpdateHistory" [table] history_revision_id int8 not null history_modification_time timestamptz not null history_method text not null history_request_body text history_type text not null history_url text not null email_address text not null registry_lock_password_hash text registry_lock_password_salt text global_role text not null is_admin bool not null registrar_roles hstore update_timestamp timestamptz history_acting_user text not null registry_lock_email_address text @@ -3038,78 +3006,6 @@ td.section {
-
- fk_contact_history_contact_repo_id - [foreign key, with no action] -
-
- - repo_id ←(0..many) public."ContactHistory".contact_repo_id - -
-
- -
-
- fk_domain_admin_contact - [foreign key, with no action] -
-
- - repo_id ←(0..many) public."Domain".admin_contact - -
-
- -
-
- fk_domain_billing_contact - [foreign key, with no action] -
-
- - repo_id ←(0..many) public."Domain".billing_contact - -
-
- -
-
- fk_domain_registrant_contact - [foreign key, with no action] -
-
- - repo_id ←(0..many) public."Domain".registrant_contact - -
-
- -
-
- fk_domain_tech_contact - [foreign key, with no action] -
-
- - repo_id ←(0..many) public."Domain".tech_contact - -
-
- -
-
- fk_poll_message_contact_repo_id - [foreign key, with no action] -
-
- - repo_id ←(0..many) public."PollMessage".contact_repo_id - -
-
- -
Indexes
@@ -3570,18 +3466,6 @@ td.section {
-
- fk_contact_history_contact_repo_id - [foreign key, with no action] -
-
- - contact_repo_id (0..many)→ public."Contact".repo_id - -
-
- -
fk_contact_history_registrar_id [foreign key, with no action] @@ -3594,23 +3478,6 @@ td.section {
-
- fk_poll_message_contact_history - [foreign key, with no action] -
-
- - contact_repo_id ←(0..many) public."PollMessage".contact_repo_id - -
-
- - history_revision_id ←(0..many) public."PollMessage".contact_history_revision_id - -
-
- -
Indexes
@@ -4329,30 +4196,6 @@ td.section {
-
- fk_domain_admin_contact - [foreign key, with no action] -
-
- - admin_contact (0..many)→ public."Contact".repo_id - -
-
- -
-
- fk_domain_billing_contact - [foreign key, with no action] -
-
- - billing_contact (0..many)→ public."Contact".repo_id - -
-
- -
fk_domain_billing_recurrence_id [foreign key, with no action] @@ -4413,30 +4256,6 @@ td.section {
-
- fk_domain_registrant_contact - [foreign key, with no action] -
-
- - registrant_contact (0..many)→ public."Contact".repo_id - -
-
- -
-
- fk_domain_tech_contact - [foreign key, with no action] -
-
- - tech_contact (0..many)→ public."Contact".repo_id - -
-
- -
fk_domain_tld [foreign key, with no action] @@ -7227,18 +7046,6 @@ td.section {
-
- fk_poll_message_contact_repo_id - [foreign key, with no action] -
-
- - contact_repo_id (0..many)→ public."Contact".repo_id - -
-
- -
fk_poll_message_domain_repo_id [foreign key, with no action] @@ -7299,23 +7106,6 @@ td.section {
-
- fk_poll_message_contact_history - [foreign key, with no action] -
-
- - contact_repo_id (0..many)→ public."ContactHistory".contact_repo_id - -
-
- - contact_history_revision_id (0..many)→ public."ContactHistory".history_revision_id - -
-
- -
fk_poll_message_host_history [foreign key, with no action] diff --git a/db/src/main/resources/sql/flyway.txt b/db/src/main/resources/sql/flyway.txt index 448649cc8..5f05e28bf 100644 --- a/db/src/main/resources/sql/flyway.txt +++ b/db/src/main/resources/sql/flyway.txt @@ -212,3 +212,6 @@ V211__domainhistoryhost_history_revision_id_hash.sql V212__domaindsdatahistory_history_revision_id_hash.sql V213__graceperiodhistory_history_revision_id_hash.sql V214__domain_unique_domain_name_active.sql +V215__drop_contact_fks_contacthistory.sql +V216__drop_contact_fks_domain.sql +V217__drop_contact_fks_pollmessage.sql diff --git a/db/src/main/resources/sql/flyway/V215__drop_contact_fks_contacthistory.sql b/db/src/main/resources/sql/flyway/V215__drop_contact_fks_contacthistory.sql new file mode 100644 index 000000000..dea236c9f --- /dev/null +++ b/db/src/main/resources/sql/flyway/V215__drop_contact_fks_contacthistory.sql @@ -0,0 +1,16 @@ +-- Copyright 2025 The Nomulus Authors. All Rights Reserved. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +ALTER TABLE ONLY "ContactHistory" + DROP CONSTRAINT fk_contact_history_contact_repo_id; diff --git a/db/src/main/resources/sql/flyway/V216__drop_contact_fks_domain.sql b/db/src/main/resources/sql/flyway/V216__drop_contact_fks_domain.sql new file mode 100644 index 000000000..2d751917a --- /dev/null +++ b/db/src/main/resources/sql/flyway/V216__drop_contact_fks_domain.sql @@ -0,0 +1,19 @@ +-- Copyright 2025 The Nomulus Authors. All Rights Reserved. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +ALTER TABLE ONLY "Domain" + DROP CONSTRAINT fk_domain_admin_contact, + DROP CONSTRAINT fk_domain_billing_contact, + DROP CONSTRAINT fk_domain_registrant_contact, + DROP CONSTRAINT fk_domain_tech_contact; diff --git a/db/src/main/resources/sql/flyway/V217__drop_contact_fks_pollmessage.sql b/db/src/main/resources/sql/flyway/V217__drop_contact_fks_pollmessage.sql new file mode 100644 index 000000000..46271f994 --- /dev/null +++ b/db/src/main/resources/sql/flyway/V217__drop_contact_fks_pollmessage.sql @@ -0,0 +1,17 @@ +-- Copyright 2025 The Nomulus Authors. All Rights Reserved. +-- +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +ALTER TABLE ONLY "PollMessage" + DROP CONSTRAINT fk_poll_message_contact_history, + DROP CONSTRAINT fk_poll_message_contact_repo_id; diff --git a/db/src/main/resources/sql/schema/nomulus.golden.sql b/db/src/main/resources/sql/schema/nomulus.golden.sql index 67bb031fc..33f0bb50f 100644 --- a/db/src/main/resources/sql/schema/nomulus.golden.sql +++ b/db/src/main/resources/sql/schema/nomulus.golden.sql @@ -2940,14 +2940,6 @@ ALTER TABLE ONLY public."ConsoleUpdateHistory" ADD CONSTRAINT fk_console_update_history_acting_user FOREIGN KEY (acting_user) REFERENCES public."User"(email_address); --- --- Name: ContactHistory fk_contact_history_contact_repo_id; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public."ContactHistory" - ADD CONSTRAINT fk_contact_history_contact_repo_id FOREIGN KEY (contact_repo_id) REFERENCES public."Contact"(repo_id) DEFERRABLE INITIALLY DEFERRED; - - -- -- Name: ContactHistory fk_contact_history_registrar_id; Type: FK CONSTRAINT; Schema: public; Owner: - -- @@ -2972,22 +2964,6 @@ ALTER TABLE ONLY public."Contact" ADD CONSTRAINT fk_contact_transfer_losing_registrar_id FOREIGN KEY (transfer_losing_registrar_id) REFERENCES public."Registrar"(registrar_id) DEFERRABLE INITIALLY DEFERRED; --- --- Name: Domain fk_domain_admin_contact; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public."Domain" - ADD CONSTRAINT fk_domain_admin_contact FOREIGN KEY (admin_contact) REFERENCES public."Contact"(repo_id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: Domain fk_domain_billing_contact; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public."Domain" - ADD CONSTRAINT fk_domain_billing_contact FOREIGN KEY (billing_contact) REFERENCES public."Contact"(repo_id) DEFERRABLE INITIALLY DEFERRED; - - -- -- Name: Domain fk_domain_billing_recurrence_id; Type: FK CONSTRAINT; Schema: public; Owner: - -- @@ -3028,22 +3004,6 @@ ALTER TABLE ONLY public."DomainHistory" ADD CONSTRAINT fk_domain_history_registrar_id FOREIGN KEY (history_registrar_id) REFERENCES public."Registrar"(registrar_id) DEFERRABLE INITIALLY DEFERRED; --- --- Name: Domain fk_domain_registrant_contact; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public."Domain" - ADD CONSTRAINT fk_domain_registrant_contact FOREIGN KEY (registrant_contact) REFERENCES public."Contact"(repo_id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: Domain fk_domain_tech_contact; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public."Domain" - ADD CONSTRAINT fk_domain_tech_contact FOREIGN KEY (tech_contact) REFERENCES public."Contact"(repo_id) DEFERRABLE INITIALLY DEFERRED; - - -- -- Name: Domain fk_domain_tld; Type: FK CONSTRAINT; Schema: public; Owner: - -- @@ -3188,22 +3148,6 @@ ALTER TABLE ONLY public."HostHistory" ADD CONSTRAINT fk_hosthistory_host FOREIGN KEY (host_repo_id) REFERENCES public."Host"(repo_id) DEFERRABLE INITIALLY DEFERRED; --- --- Name: PollMessage fk_poll_message_contact_history; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public."PollMessage" - ADD CONSTRAINT fk_poll_message_contact_history FOREIGN KEY (contact_repo_id, contact_history_revision_id) REFERENCES public."ContactHistory"(contact_repo_id, history_revision_id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: PollMessage fk_poll_message_contact_repo_id; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public."PollMessage" - ADD CONSTRAINT fk_poll_message_contact_repo_id FOREIGN KEY (contact_repo_id) REFERENCES public."Contact"(repo_id) DEFERRABLE INITIALLY DEFERRED; - - -- -- Name: PollMessage fk_poll_message_domain_repo_id; Type: FK CONSTRAINT; Schema: public; Owner: - --