-- Copyright 2019 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.

    create table "AllocationToken" (
       token text not null,
        update_timestamp timestamptz,
        allowed_registrar_ids text[],
        allowed_tlds text[],
        creation_time timestamptz not null,
        discount_fraction float8 not null,
        discount_premiums boolean not null,
        discount_years int4 not null,
        domain_name text,
        redemption_domain_history_id int8,
        redemption_domain_repo_id text,
        token_status_transitions hstore,
        token_type text,
        primary key (token)
    );

    create table "BillingCancellation" (
       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_event_history_id int8,
        billing_event_domain_repo_id text,
        billing_recurrence_id int8,
        billing_recurrence_history_id int8,
        billing_recurrence_domain_repo_id text,
        primary key (billing_cancellation_id)
    );

    create table "BillingEvent" (
       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,
        recurrence_history_revision_id int8,
        synthetic_creation_time timestamptz,
        primary key (billing_event_id)
    );

    create table "BillingRecurrence" (
       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,
        primary key (billing_recurrence_id)
    );

    create table "ClaimsEntry" (
       revision_id int8 not null,
        domain_label text not null,
        claim_key text not null,
        primary key (revision_id, domain_label)
    );

    create table "ClaimsList" (
       revision_id  bigserial not null,
        tmdb_generation_time timestamptz not null,
        creation_timestamp timestamptz not null,
        primary key (revision_id)
    );

    create table "Contact" (
       repo_id text not null,
        update_timestamp timestamptz,
        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[],
        auth_info_repo_id text,
        auth_info_value text,
        contact_id text,
        disclose_types_addr text[],
        disclose_show_email boolean,
        disclose_show_fax boolean,
        disclose_mode_flag boolean,
        disclose_types_name text[],
        disclose_types_org text[],
        disclose_show_voice boolean,
        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_history_entry_id int8,
        transfer_poll_message_id_1 int8,
        transfer_poll_message_id_2 int8,
        transfer_poll_message_id_3 int8,
        transfer_repo_id text,
        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,
        primary key (repo_id)
    );

    create table "ContactHistory" (
       contact_repo_id text not null,
        history_revision_id int8 not null,
        history_by_superuser boolean not null,
        history_registrar_id text,
        history_modification_time timestamptz not null,
        history_reason text,
        history_requested_by_registrar boolean,
        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 boolean,
        disclose_show_fax boolean,
        disclose_mode_flag boolean,
        disclose_types_name text[],
        disclose_types_org text[],
        disclose_show_voice boolean,
        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_history_entry_id int8,
        transfer_poll_message_id_1 int8,
        transfer_poll_message_id_2 int8,
        transfer_poll_message_id_3 int8,
        transfer_repo_id text,
        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[],
        update_timestamp timestamptz,
        primary key (contact_repo_id, history_revision_id)
    );

    create table "Cursor" (
       scope text not null,
        type text not null,
        cursor_time timestamptz not null,
        last_update_time timestamptz not null,
        primary key (scope, type)
    );

    create table "DelegationSignerData" (
       algorithm int4 not null,
        digest bytea not null,
        digest_type int4 not null,
        domain_repo_id text not null,
        key_tag int4 not null,
        primary key (algorithm, digest, digest_type, domain_repo_id, key_tag)
    );

    create table "Domain" (
       repo_id text not null,
        update_timestamp timestamptz,
        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[],
        admin_contact text,
        auth_info_repo_id text,
        auth_info_value text,
        billing_recurrence_id int8,
        billing_recurrence_history_id int8,
        autorenew_end_time timestamptz,
        autorenew_poll_message_id int8,
        autorenew_poll_message_history_id int8,
        billing_contact text,
        deletion_poll_message_id int8,
        deletion_poll_message_history_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_history_id int8,
        transfer_billing_cancellation_id int8,
        transfer_billing_recurrence_id int8,
        transfer_billing_recurrence_history_id int8,
        transfer_autorenew_poll_message_id int8,
        transfer_autorenew_poll_message_history_id int8,
        transfer_billing_event_id int8,
        transfer_billing_event_history_id int8,
        transfer_renew_period_unit text,
        transfer_renew_period_value int4,
        transfer_registration_expiration_time timestamptz,
        transfer_history_entry_id int8,
        transfer_poll_message_id_1 int8,
        transfer_poll_message_id_2 int8,
        transfer_poll_message_id_3 int8,
        transfer_repo_id text,
        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,
        primary key (repo_id)
    );

    create table "DomainDsDataHistory" (
       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,
        domain_repo_id text,
        key_tag int4 not null,
        primary key (ds_data_history_revision_id)
    );

    create table "DomainHistory" (
       domain_repo_id text not null,
        history_revision_id int8 not null,
        history_by_superuser boolean not null,
        history_registrar_id text,
        history_modification_time timestamptz not null,
        history_reason text,
        history_requested_by_registrar boolean,
        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,
        billing_recurrence_history_id int8,
        autorenew_end_time timestamptz,
        autorenew_poll_message_id int8,
        autorenew_poll_message_history_id int8,
        billing_contact text,
        deletion_poll_message_id int8,
        deletion_poll_message_history_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_history_id int8,
        transfer_billing_cancellation_id int8,
        transfer_billing_recurrence_id int8,
        transfer_billing_recurrence_history_id int8,
        transfer_autorenew_poll_message_id int8,
        transfer_autorenew_poll_message_history_id int8,
        transfer_billing_event_id int8,
        transfer_billing_event_history_id int8,
        transfer_renew_period_unit text,
        transfer_renew_period_value int4,
        transfer_registration_expiration_time timestamptz,
        transfer_history_entry_id int8,
        transfer_poll_message_id_1 int8,
        transfer_poll_message_id_2 int8,
        transfer_poll_message_id_3 int8,
        transfer_repo_id text,
        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,
        history_other_registrar_id text,
        history_period_unit text,
        history_period_value int4,
        primary key (domain_repo_id, history_revision_id)
    );

    create table "DomainHistoryHost" (
       domain_history_domain_repo_id text not null,
        domain_history_history_revision_id int8 not null,
        host_repo_id text
    );

    create table "DomainHost" (
       domain_repo_id text not null,
        host_repo_id text
    );

    create table "DomainTransactionRecord" (
       id  bigserial not null,
        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,
        primary key (id)
    );

    create table "GracePeriod" (
       grace_period_id int8 not null,
        billing_event_id int8,
        billing_event_history_id int8,
        billing_event_domain_repo_id text,
        billing_recurrence_id int8,
        billing_recurrence_history_id int8,
        billing_recurrence_domain_repo_id text,
        registrar_id text not null,
        domain_repo_id text not null,
        expiration_time timestamptz not null,
        type text not null,
        primary key (grace_period_id)
    );

    create table "GracePeriodHistory" (
       grace_period_history_revision_id int8 not null,
        billing_event_id int8,
        billing_event_history_id int8,
        billing_event_domain_repo_id text,
        billing_recurrence_id int8,
        billing_recurrence_history_id int8,
        billing_recurrence_domain_repo_id text,
        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,
        primary key (grace_period_history_revision_id)
    );

    create table "Host" (
       repo_id text not null,
        update_timestamp timestamptz,
        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,
        inet_addresses text[],
        last_superordinate_change timestamptz,
        last_transfer_time timestamptz,
        superordinate_domain text,
        primary key (repo_id)
    );

    create table "HostHistory" (
       host_repo_id text not null,
        history_revision_id int8 not null,
        history_by_superuser boolean not null,
        history_registrar_id text,
        history_modification_time timestamptz not null,
        history_reason text,
        history_requested_by_registrar boolean,
        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[],
        update_timestamp timestamptz,
        primary key (host_repo_id, history_revision_id)
    );

    create table "KmsSecret" (
       revision_id int8 not null,
        creation_time timestamptz not null,
        encrypted_value text not null,
        crypto_key_version_name text not null,
        secret_name text not null,
        primary key (revision_id)
    );

    create table "Lock" (
       resource_name text not null,
        scope text not null,
        acquired_time timestamptz not null,
        expiration_time timestamptz not null,
        request_log_id text not null,
        primary key (resource_name, scope)
    );

    create table "PollMessage" (
       type text not null,
        poll_message_id int8 not null,
        registrar_id text not null,
        contact_history_revision_id int8,
        contact_repo_id text,
        domain_history_revision_id int8,
        domain_repo_id text,
        event_time timestamptz not null,
        host_history_revision_id int8,
        host_repo_id text,
        message text,
        transfer_response_contact_id text,
        transfer_response_domain_expiration_time timestamptz,
        transfer_response_domain_name text,
        pending_action_response_action_result boolean,
        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,
        primary key (poll_message_id)
    );

    create table "PremiumEntry" (
       revision_id int8 not null,
        domain_label text not null,
        price numeric(19, 2) not null,
        primary key (revision_id, domain_label)
    );

    create table "PremiumList" (
       revision_id  bigserial not null,
        creation_timestamp timestamptz,
        name text not null,
        bloom_filter bytea not null,
        currency text not null,
        primary key (revision_id)
    );

    create table "RdeRevision" (
       date date not null,
        mode text not null,
        tld text not null,
        update_timestamp timestamptz,
        revision int4 not null,
        primary key (date, mode, tld)
    );

    create table "Registrar" (
       registrar_id text not null,
        allowed_tlds text[],
        billing_account_map hstore,
        billing_identifier int8,
        block_premium_names boolean not null,
        client_certificate text,
        client_certificate_hash text,
        contacts_require_syncing boolean not null,
        creation_time timestamptz,
        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 boolean not null,
        password_salt text,
        state text,
        type text not null,
        url text,
        whois_server text,
        primary key (registrar_id)
    );

    create table "RegistrarPoc" (
       email_address text not null,
        registrar_id text not null,
        allowed_to_set_registry_lock_password boolean not null,
        fax_number text,
        gae_user_id 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 boolean not null,
        visible_in_whois_as_admin boolean not null,
        visible_in_whois_as_tech boolean not null,
        primary key (email_address, registrar_id)
    );

    create table "RegistryLock" (
       revision_id  bigserial not null,
        domain_name text not null,
        is_superuser boolean not null,
        last_update_time timestamptz not null,
        lock_completion_time timestamptz,
        lock_request_time timestamptz not null,
        registrar_id text not null,
        registrar_poc_id text,
        relock_duration interval,
        repo_id text not null,
        unlock_completion_time timestamptz,
        unlock_request_time timestamptz,
        verification_code text not null,
        relock_revision_id int8,
        primary key (revision_id)
    );

    create table "ReservedEntry" (
       revision_id int8 not null,
        domain_label text not null,
        comment text,
        reservation_type int4 not null,
        primary key (revision_id, domain_label)
    );

    create table "ReservedList" (
       revision_id  bigserial not null,
        creation_timestamp timestamptz,
        name text not null,
        should_publish boolean not null,
        primary key (revision_id)
    );

    create table "ServerSecret" (
       id int8 not null,
        secret uuid,
        primary key (id)
    );

    create table "SignedMarkRevocationEntry" (
       revision_id int8 not null,
        revocation_time timestamptz not null,
        smd_id text not null,
        primary key (revision_id, smd_id)
    );

    create table "SignedMarkRevocationList" (
       revision_id  bigserial not null,
        creation_time timestamptz,
        primary key (revision_id)
    );

    create table "Spec11ThreatMatch" (
       id  bigserial not null,
        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,
        primary key (id)
    );

    create table "SqlReplayCheckpoint" (
       id int8 not null,
        last_replay_time timestamptz not null,
        primary key (id)
    );

    create table "Tld" (
       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,
        create_billing_cost_amount numeric(19, 2),
        create_billing_cost_currency text,
        creation_time timestamptz not null,
        currency text not null,
        dns_paused boolean not null,
        dns_writers text[] not null,
        drive_folder_id text,
        eap_fee_schedule hstore not null,
        escrow_enabled boolean not null,
        invoicing_enabled boolean 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,
        primary key (tld_name)
    );

    create table "TmchCrl" (
       id int8 not null,
        certificate_revocations text not null,
        update_timestamp timestamptz not null,
        url text not null,
        primary key (id)
    );

    create table "Transaction" (
       id  bigserial not null,
        contents bytea,
        primary key (id)
    );
create index allocation_token_domain_name_idx on "AllocationToken" (domain_name);
create index IDXih4b2tea127p5rb61gje6e1y2 on "BillingCancellation" (registrar_id);
create index IDX2exdfbx6oiiwnhr8j6gjpqt2j on "BillingCancellation" (event_time);
create index IDXqa3g92jc17e8dtiaviy4fet4x on "BillingCancellation" (billing_time);
create index IDXqspv57gj2led8ly42fq01t7m7 on "BillingEvent" (registrar_id);
create index IDX5yfbr88439pxw0v3j86c74fp8 on "BillingEvent" (event_time);
create index IDX6py6ocrab0ivr76srcd2okpnq on "BillingEvent" (billing_time);
create index IDXplxf9v56p0wg8ws6qsvd082hk on "BillingEvent" (synthetic_creation_time);
create index IDXcesda59ssop44kklytpb292hn on "BillingEvent" (allocation_token);
create index IDXd3gxhkh0jk694pjvh9pyn7wjc on "BillingRecurrence" (registrar_id);
create index IDX6syykou4nkc7hqa5p8r92cpch on "BillingRecurrence" (event_time);
create index IDXp3usbtvk0v1m14i5tdp4xnxgc on "BillingRecurrence" (recurrence_end_time);
create index IDXjny8wuot75b5e6p38r47wdawu on "BillingRecurrence" (recurrence_time_of_year);
create index IDX3y752kr9uh4kh6uig54vemx0l on "Contact" (creation_time);
create index IDXtm415d6fe1rr35stm33s5mg18 on "Contact" (current_sponsor_registrar_id);
create index IDXn1f711wicdnooa2mqb7g1m55o on "Contact" (deletion_time);
create index IDXoqd7n4hbx86hvlgkilq75olas on "Contact" (contact_id);
create index IDX1p3esngcwwu6hstyua6itn6ff on "Contact" (search_name);
create index IDXo1xdtpij2yryh0skxe9v91sep on "ContactHistory" (creation_time);
create index IDXhp33wybmb6tbpr1bq7ttwk8je on "ContactHistory" (history_registrar_id);
create index IDX9q53px6r302ftgisqifmc6put on "ContactHistory" (history_type);
create index IDXsudwswtwqnfnx2o1hx4s0k0g5 on "ContactHistory" (history_modification_time);
create index IDXhlqqd5uy98cjyos72d81x9j95 on "DelegationSignerData" (domain_repo_id);
create index IDXnb02m43jcx24r64n8rbg22u4q on "Domain" (admin_contact);
create index IDXlrq7v63pc21uoh3auq6eybyhl on "Domain" (autorenew_end_time);
create index IDXq9gy8x2xynt9tb16yajn1gcm8 on "Domain" (billing_contact);
create index IDX8nr0ke9mrrx4ewj6pd2ag4rmr on "Domain" (creation_time);
create index IDXhsjqiy2lyobfymplb28nm74lm on "Domain" (current_sponsor_registrar_id);
create index IDX5mnf0wn20tno4b9do88j61klr on "Domain" (deletion_time);
create index IDXc5aw4pk1vkd6ymhvkpanmoadv on "Domain" (domain_name);
create index IDXr22ciyccwi9rrqmt1ro0s59qf on "Domain" (tech_contact);
create index IDXrwl38wwkli1j7gkvtywi9jokq on "Domain" (tld);
create index IDXa7fu0bqynfb79rr80528b4jqt on "Domain" (registrant_contact);
create index IDXrh4xmrot9bd63o382ow9ltfig on "DomainHistory" (creation_time);
create index IDXaro1omfuaxjwmotk3vo00trwm on "DomainHistory" (history_registrar_id);
create index IDXsu1nam10cjes9keobapn5jvxj on "DomainHistory" (history_type);
create index IDX6w3qbtgce93cal2orjg1tw7b7 on "DomainHistory" (history_modification_time);

    alter table if exists "DomainHistoryHost" 
       add constraint UKt2e7ae3t8gcsxd13wjx2ka7ij unique (domain_history_history_revision_id, domain_history_domain_repo_id, host_repo_id);

    alter table if exists "DomainHost" 
       add constraint UKat9erbh52e4lg3jw6ai9wkjj9 unique (domain_repo_id, host_repo_id);
create index IDXj1mtx98ndgbtb1bkekahms18w on "GracePeriod" (domain_repo_id);
create index IDXd01j17vrpjxaerxdmn8bwxs7s on "GracePeriodHistory" (domain_repo_id);
create index IDXfg2nnjlujxo6cb9fha971bq2n on "HostHistory" (creation_time);
create index IDX1iy7njgb7wjmj9piml4l2g0qi on "HostHistory" (history_registrar_id);
create index IDXkkwbwcwvrdkkqothkiye4jiff on "HostHistory" (host_name);
create index IDXknk8gmj7s47q56cwpa6rmpt5l on "HostHistory" (history_type);
create index IDX67qwkjtlq5q8dv6egtrtnhqi7 on "HostHistory" (history_modification_time);
create index IDXli9nil3s4t4p21i3xluvvilb7 on "KmsSecret" (secret_name);
create index IDXe7wu46c7wpvfmfnj4565abibp on "PollMessage" (registrar_id);
create index IDXaydgox62uno9qx8cjlj5lauye on "PollMessage" (event_time);
create index premiumlist_name_idx on "PremiumList" (name);
create index registrar_name_idx on "Registrar" (registrar_name);
create index registrar_iana_identifier_idx on "Registrar" (iana_identifier);
create index registrarpoc_gae_user_id_idx on "RegistrarPoc" (gae_user_id);
create index idx_registry_lock_verification_code on "RegistryLock" (verification_code);
create index idx_registry_lock_registrar_id on "RegistryLock" (registrar_id);

    alter table if exists "RegistryLock" 
       add constraint idx_registry_lock_repo_id_revision_id unique (repo_id, revision_id);
create index reservedlist_name_idx on "ReservedList" (name);
create index spec11threatmatch_registrar_id_idx on "Spec11ThreatMatch" (registrar_id);
create index spec11threatmatch_tld_idx on "Spec11ThreatMatch" (tld);
create index spec11threatmatch_check_date_idx on "Spec11ThreatMatch" (check_date);

    alter table if exists "DelegationSignerData" 
       add constraint FKtr24j9v14ph2mfuw2gsmt12kq 
       foreign key (domain_repo_id) 
       references "Domain";

    alter table if exists "DomainDsDataHistory" 
       add constraint FKo4ilgyyfnvppbpuivus565i0j 
       foreign key (domain_repo_id, domain_history_revision_id) 
       references "DomainHistory";

    alter table if exists "DomainHistoryHost" 
       add constraint FKa9woh3hu8gx5x0vly6bai327n 
       foreign key (domain_history_domain_repo_id, domain_history_history_revision_id) 
       references "DomainHistory";

    alter table if exists "DomainHost" 
       add constraint FKeq1guccbre1yk3oosgp2io554 
       foreign key (domain_repo_id) 
       references "Domain";

    alter table if exists "DomainTransactionRecord" 
       add constraint FKcjqe54u72kha71vkibvxhjye7 
       foreign key (domain_repo_id, history_revision_id) 
       references "DomainHistory";

    alter table if exists "GracePeriod" 
       add constraint FK2mys4hojm6ev2g9tmy5aq6m7g 
       foreign key (domain_repo_id) 
       references "Domain";

    alter table if exists "GracePeriodHistory" 
       add constraint FK7w3cx8d55q8bln80e716tr7b8 
       foreign key (domain_repo_id, domain_history_revision_id) 
       references "DomainHistory";

    alter table if exists "RegistryLock" 
       add constraint FK2lhcwpxlnqijr96irylrh1707 
       foreign key (relock_revision_id) 
       references "RegistryLock";

    alter table if exists "SignedMarkRevocationEntry" 
       add constraint FK5ivlhvs3121yx2li5tqh54u4 
       foreign key (revision_id) 
       references "SignedMarkRevocationList";
