diff --git a/db/migrate/20240411153910_create_accredited_individuals.rb b/db/migrate/20240411153910_create_accredited_individuals.rb new file mode 100644 index 00000000000..78e6999a888 --- /dev/null +++ b/db/migrate/20240411153910_create_accredited_individuals.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +class CreateAccreditedIndividuals < ActiveRecord::Migration[7.1] + def change + create_table :accredited_individuals, id: :uuid do |t| + t.uuid :ogc_id, null: false + t.string :registration_number, null: false + t.string :poa_code, limit: 3, index: true + t.string :individual_type, null: false + t.string :first_name + t.string :middle_initial + t.string :last_name + t.string :full_name, index: true + t.string :email + t.string :phone + t.string :address_type + t.string :address_line1 + t.string :address_line2 + t.string :address_line3 + t.string :city + t.string :country_code_iso3 + t.string :country_name + t.string :county_name + t.string :county_code + t.string :international_postal_code + t.string :province + t.string :state_code + t.string :zip_code + t.string :zip_suffix + t.jsonb :raw_address + t.float :lat + t.float :long + t.geography :location, limit: { srid: 4326, type: 'st_point', geographic: true } + t.timestamps + + t.index :location, using: :gist + t.index %i[ registration_number individual_type ], name: 'index_on_reg_num_and_type_for_accredited_individuals', unique: true + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 686d2f0e861..a996325aa71 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -53,6 +53,43 @@ t.index ["uuid"], name: "index_accounts_on_uuid", unique: true end + create_table "accredited_individuals", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + t.uuid "ogc_id", null: false + t.string "registration_number", null: false + t.string "poa_code", limit: 3 + t.string "individual_type", null: false + t.string "first_name" + t.string "middle_initial" + t.string "last_name" + t.string "full_name" + t.string "email" + t.string "phone" + t.string "address_type" + t.string "address_line1" + t.string "address_line2" + t.string "address_line3" + t.string "city" + t.string "country_code_iso3" + t.string "country_name" + t.string "county_name" + t.string "county_code" + t.string "international_postal_code" + t.string "province" + t.string "state_code" + t.string "zip_code" + t.string "zip_suffix" + t.jsonb "raw_address" + t.float "lat" + t.float "long" + t.geography "location", limit: {:srid=>4326, :type=>"st_point", :geographic=>true} + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["full_name"], name: "index_accredited_individuals_on_full_name" + t.index ["location"], name: "index_accredited_individuals_on_location", using: :gist + t.index ["poa_code"], name: "index_accredited_individuals_on_poa_code" + t.index ["registration_number", "individual_type"], name: "index_on_reg_num_and_type_for_accredited_individuals", unique: true + end + create_table "active_storage_attachments", force: :cascade do |t| t.string "name", null: false t.string "record_type", null: false