Merge pull request #4300 from tomhughes/relation-members-primary-key

Simplify primary key for relation members tables
This commit is contained in:
Andy Allan 2023-10-26 19:40:57 +01:00 committed by GitHub
commit 6e28c5fe19
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 19 additions and 7 deletions

View file

@ -20,7 +20,6 @@
class OldRelationMember < ApplicationRecord
self.table_name = "relation_members"
self.primary_key = %w[relation_id version sequence_id]
belongs_to :old_relation, :query_constraints => [:relation_id, :version], :inverse_of => :old_members
# A bit messy, referring to the current tables, should do for the data browser for now

View file

@ -19,7 +19,6 @@
class RelationMember < ApplicationRecord
self.table_name = "current_relation_members"
self.primary_key = %w[relation_id sequence_id]
belongs_to :relation
belongs_to :member, :polymorphic => true

View file

@ -0,0 +1,11 @@
class CorrectRelationMembersPrimaryKey < ActiveRecord::Migration[7.0]
def up
alter_primary_key :current_relation_members, [:relation_id, :sequence_id]
alter_primary_key :relation_members, [:relation_id, :version, :sequence_id]
end
def down
alter_primary_key :relation_members, [:relation_id, :version, :member_type, :member_id, :member_role, :sequence_id]
alter_primary_key :current_relation_members, [:relation_id, :member_type, :member_id, :member_role, :sequence_id]
end
end

View file

@ -1883,7 +1883,7 @@ ALTER TABLE ONLY public.current_nodes
--
ALTER TABLE ONLY public.current_relation_members
ADD CONSTRAINT current_relation_members_pkey PRIMARY KEY (relation_id, member_type, member_id, member_role, sequence_id);
ADD CONSTRAINT current_relation_members_pkey PRIMARY KEY (relation_id, sequence_id);
--
@ -2107,7 +2107,7 @@ ALTER TABLE ONLY public.redactions
--
ALTER TABLE ONLY public.relation_members
ADD CONSTRAINT relation_members_pkey PRIMARY KEY (relation_id, version, member_type, member_id, member_role, sequence_id);
ADD CONSTRAINT relation_members_pkey PRIMARY KEY (relation_id, version, sequence_id);
--
@ -3437,6 +3437,7 @@ INSERT INTO "schema_migrations" (version) VALUES
('23'),
('22'),
('21'),
('20231010194809'),
('20231007141103'),
('20230830115220'),
('20230830115219'),

View file

@ -102,7 +102,7 @@ module Api
second_relation = create(:relation_member, :member => node).relation
_super_relation = create(:relation_member, :member => second_relation).relation
# should combine multiple relation_member references into just one relation entry
create(:relation_member, :member => node, :relation => relation_with_node, :sequence_id => 2)
create(:relation_member, :member => node, :relation => relation_with_node)
# should not include deleted relations
deleted_relation = create(:relation, :deleted)
create(:relation_member, :member => node, :relation => deleted_relation)
@ -122,7 +122,7 @@ module Api
second_relation = create(:relation_member, :member => way).relation
_super_relation = create(:relation_member, :member => second_relation).relation
# should combine multiple relation_member references into just one relation entry
create(:relation_member, :member => way, :relation => relation_with_way, :sequence_id => 2)
create(:relation_member, :member => way, :relation => relation_with_way)
# should not include deleted relations
deleted_relation = create(:relation, :deleted)
create(:relation_member, :member => way, :relation => deleted_relation)
@ -142,7 +142,7 @@ module Api
second_relation = create(:relation_member, :member => relation).relation
_super_relation = create(:relation_member, :member => second_relation).relation
# should combine multiple relation_member references into just one relation entry
create(:relation_member, :member => relation, :relation => relation_with_relation, :sequence_id => 2)
create(:relation_member, :member => relation, :relation => relation_with_relation)
# should not include deleted relations
deleted_relation = create(:relation, :deleted)
create(:relation_member, :member => relation, :relation => deleted_relation)

View file

@ -1,5 +1,6 @@
FactoryBot.define do
factory :old_relation_member do
sequence(:sequence_id)
member_role { "" }
old_relation

View file

@ -1,5 +1,6 @@
FactoryBot.define do
factory :relation_member do
sequence(:sequence_id)
member_role { "" }
relation