From a7e7b04b5bab5893e9bbb9424405979dce2a21f2 Mon Sep 17 00:00:00 2001 From: Kat Date: Fri, 10 Mar 2023 11:12:48 +0000 Subject: [PATCH] Add local authority links --- app/models/local_authority.rb | 3 +++ app/models/local_authority_link.rb | 4 ++++ .../20230309145740_add_local_authority_link.rb | 12 ++++++++++++ db/schema.rb | 13 ++++++++++++- 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 app/models/local_authority_link.rb create mode 100644 db/migrate/20230309145740_add_local_authority_link.rb diff --git a/app/models/local_authority.rb b/app/models/local_authority.rb index 22786ce7c..fe11adf04 100644 --- a/app/models/local_authority.rb +++ b/app/models/local_authority.rb @@ -1,4 +1,7 @@ class LocalAuthority < ApplicationRecord + has_many :local_authority_links, dependent: :destroy + has_many :linked_local_authorities, class_name: "LocalAuthority", through: :local_authority_links + scope :active, ->(date) { where("start_date <= ? AND (end_date IS NULL OR end_date >= ?)", date, date) } scope :england, -> { where("code LIKE ?", "E%") } end diff --git a/app/models/local_authority_link.rb b/app/models/local_authority_link.rb new file mode 100644 index 000000000..dcd339e76 --- /dev/null +++ b/app/models/local_authority_link.rb @@ -0,0 +1,4 @@ +class LocalAuthorityLink < ApplicationRecord + belongs_to :local_authority, class_name: "LocalAuthority" + belongs_to :linked_local_authority, class_name: "LocalAuthority" +end diff --git a/db/migrate/20230309145740_add_local_authority_link.rb b/db/migrate/20230309145740_add_local_authority_link.rb new file mode 100644 index 000000000..6c1b0a079 --- /dev/null +++ b/db/migrate/20230309145740_add_local_authority_link.rb @@ -0,0 +1,12 @@ +class AddLocalAuthorityLink < ActiveRecord::Migration[7.0] + def change + create_table :local_authority_links do |t| + t.references :local_authority + t.references :linked_local_authority + + t.timestamps + end + add_foreign_key :local_authority_links, :local_authorities, column: :local_authority_id + add_foreign_key :local_authority_links, :local_authorities, column: :linked_local_authority_id + end +end diff --git a/db/schema.rb b/db/schema.rb index 085419473..a1cc59257 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2023_03_08_101826) do +ActiveRecord::Schema[7.0].define(version: 2023_03_09_145740) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -299,6 +299,15 @@ ActiveRecord::Schema[7.0].define(version: 2023_03_08_101826) do t.index ["code"], name: "index_local_authority_code", unique: true end + create_table "local_authority_links", force: :cascade do |t| + t.bigint "local_authority_id" + t.bigint "linked_local_authority_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["linked_local_authority_id"], name: "index_local_authority_links_on_linked_local_authority_id" + t.index ["local_authority_id"], name: "index_local_authority_links_on_local_authority_id" + end + create_table "location_deactivation_periods", force: :cascade do |t| t.datetime "deactivation_date" t.datetime "reactivation_date" @@ -641,6 +650,8 @@ ActiveRecord::Schema[7.0].define(version: 2023_03_08_101826) do add_foreign_key "lettings_logs", "locations" add_foreign_key "lettings_logs", "organisations", column: "owning_organisation_id", on_delete: :cascade add_foreign_key "lettings_logs", "schemes" + add_foreign_key "local_authority_links", "local_authorities" + add_foreign_key "local_authority_links", "local_authorities", column: "linked_local_authority_id" add_foreign_key "locations", "schemes" add_foreign_key "organisation_relationships", "organisations", column: "child_organisation_id" add_foreign_key "organisation_relationships", "organisations", column: "parent_organisation_id"