diff --git a/app/models/disposable_domain.rb b/app/models/disposable_domain.rb new file mode 100644 index 00000000000..f32d48d914d --- /dev/null +++ b/app/models/disposable_domain.rb @@ -0,0 +1,2 @@ +class DisposableDomain < ApplicationRecord +end diff --git a/db/primary_migrate/20231024170146_create_email_data_table.rb b/db/primary_migrate/20231024170146_create_email_data_table.rb new file mode 100644 index 00000000000..92dfa8ff017 --- /dev/null +++ b/db/primary_migrate/20231024170146_create_email_data_table.rb @@ -0,0 +1,11 @@ +class CreateEmailDataTable < ActiveRecord::Migration[7.0] + def change + enable_extension "citext" + + create_table :disposable_domains do |t| + t.citext :name, null: false + end + + add_index :disposable_domains, :name, unique: true + end +end diff --git a/db/schema.rb b/db/schema.rb index 26f4f662d13..bb0e7352e81 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,8 +10,9 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.1].define(version: 2023_08_31_124437) do +ActiveRecord::Schema[7.1].define(version: 2023_10_24_172229) do # These are extensions that must be enabled in order to support this database + enable_extension "citext" enable_extension "pg_stat_statements" enable_extension "pgcrypto" enable_extension "plpgsql" @@ -94,6 +95,11 @@ t.index ["user_id", "last_used_at"], name: "index_device_user_id_last_used_at" end + create_table "disposable_domains", force: :cascade do |t| + t.citext "name", null: false + t.index ["name"], name: "index_disposable_domains_on_name", unique: true + end + create_table "doc_auth_logs", force: :cascade do |t| t.integer "user_id", null: false t.datetime "welcome_view_at", precision: nil diff --git a/lib/tasks/disposable_domains.rake b/lib/tasks/disposable_domains.rake new file mode 100644 index 00000000000..665f40cc163 --- /dev/null +++ b/lib/tasks/disposable_domains.rake @@ -0,0 +1,11 @@ +# rubocop:disable Rails/SkipsModelValidations +require 'csv' +namespace :disposable_domains do + task :load, %i[s3_url] => [:environment] do |_task, args| + file = Identity::Hostdata.secrets_s3.read_file(args[:s3_url]) + names = file.split("\n") + DisposableDomain.insert_all(names.map { |name| { name: } }) + end +end +# rake "disposable_domains:load['URL_HERE']" +# rubocop:enable Rails/SkipsModelValidations