From 46cd08b1c866162cafa92fb0aa2b38ca6fe1f353 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Fri, 6 Oct 2023 22:13:50 +0100 Subject: [PATCH] Replace composite_primary_keys with rails builtin support --- Gemfile | 1 - app/models/changeset_tag.rb | 2 -- app/models/diary_entry_subscription.rb | 2 -- app/models/node_tag.rb | 1 - app/models/old_node.rb | 3 +-- app/models/old_node_tag.rb | 5 ++--- app/models/old_relation.rb | 5 ++--- app/models/old_relation_member.rb | 6 +++--- app/models/old_relation_tag.rb | 5 ++--- app/models/old_way.rb | 5 ++--- app/models/old_way_node.rb | 5 ++--- app/models/old_way_tag.rb | 5 ++--- app/models/relation_member.rb | 2 +- app/models/relation_tag.rb | 1 - app/models/user_preference.rb | 2 -- app/models/way_node.rb | 1 - app/models/way_tag.rb | 1 - test/controllers/api/nodes_controller_test.rb | 2 +- 18 files changed, 18 insertions(+), 36 deletions(-) diff --git a/Gemfile b/Gemfile index e5cb4173f..229f68740 100644 --- a/Gemfile +++ b/Gemfile @@ -48,7 +48,6 @@ gem "active_record_union" gem "bootstrap", :github => "gravitystorm/bootstrap-rubygem", :branch => "dartsass_5_2_3" gem "bootstrap_form", "~> 5.0" gem "cancancan" -# gem "composite_primary_keys", "~> 14.0.0" gem "config" gem "delayed_job_active_record" gem "frozen_record" diff --git a/app/models/changeset_tag.rb b/app/models/changeset_tag.rb index cf8af6ba9..da9fbce51 100644 --- a/app/models/changeset_tag.rb +++ b/app/models/changeset_tag.rb @@ -12,8 +12,6 @@ # class ChangesetTag < ApplicationRecord - self.primary_keys = "changeset_id", "k" - belongs_to :changeset validates :changeset, :associated => true diff --git a/app/models/diary_entry_subscription.rb b/app/models/diary_entry_subscription.rb index ed6de79e4..93b8847f4 100644 --- a/app/models/diary_entry_subscription.rb +++ b/app/models/diary_entry_subscription.rb @@ -16,8 +16,6 @@ # class DiaryEntrySubscription < ApplicationRecord - self.primary_keys = "user_id", "diary_entry_id" - belongs_to :user belongs_to :diary_entry end diff --git a/app/models/node_tag.rb b/app/models/node_tag.rb index d76a1a0ae..18e502439 100644 --- a/app/models/node_tag.rb +++ b/app/models/node_tag.rb @@ -13,7 +13,6 @@ class NodeTag < ApplicationRecord self.table_name = "current_node_tags" - self.primary_keys = "node_id", "k" belongs_to :node diff --git a/app/models/old_node.rb b/app/models/old_node.rb index 077039ac3..3ec5cd415 100644 --- a/app/models/old_node.rb +++ b/app/models/old_node.rb @@ -29,7 +29,6 @@ class OldNode < ApplicationRecord include ConsistencyValidations self.table_name = "nodes" - self.primary_keys = "node_id", "version" # NOTE: this needs to be included after the table name changes, or # the queries generated by Redactable will use the wrong table name. @@ -49,7 +48,7 @@ class OldNode < ApplicationRecord belongs_to :redaction, :optional => true belongs_to :current_node, :class_name => "Node", :foreign_key => "node_id", :inverse_of => :old_nodes - has_many :old_tags, :class_name => "OldNodeTag", :foreign_key => [:node_id, :version], :inverse_of => :old_node + has_many :old_tags, :class_name => "OldNodeTag", :query_constraints => [:node_id, :version], :inverse_of => :old_node def validate_position errors.add(:base, "Node is not in the world") unless in_world? diff --git a/app/models/old_node_tag.rb b/app/models/old_node_tag.rb index c710e48f1..8f632a671 100644 --- a/app/models/old_node_tag.rb +++ b/app/models/old_node_tag.rb @@ -9,14 +9,13 @@ # # Foreign Keys # -# node_tags_id_fkey (node_id => nodes.node_id) +# node_tags_id_fkey (["node_id", "version"] => nodes.["node_id", "version"]) # class OldNodeTag < ApplicationRecord self.table_name = "node_tags" - self.primary_keys = "node_id", "version", "k" - belongs_to :old_node, :foreign_key => [:node_id, :version], :inverse_of => :old_tags + belongs_to :old_node, :query_constraints => [:node_id, :version], :inverse_of => :old_tags validates :old_node, :associated => true validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }, :characters => true diff --git a/app/models/old_relation.rb b/app/models/old_relation.rb index 6f122b260..5ff12fd58 100644 --- a/app/models/old_relation.rb +++ b/app/models/old_relation.rb @@ -24,7 +24,6 @@ class OldRelation < ApplicationRecord include ConsistencyValidations self.table_name = "relations" - self.primary_keys = "relation_id", "version" # NOTE: this needs to be included after the table name changes, or # the queries generated by Redactable will use the wrong table name. @@ -34,8 +33,8 @@ class OldRelation < ApplicationRecord belongs_to :redaction, :optional => true belongs_to :current_relation, :class_name => "Relation", :foreign_key => "relation_id", :inverse_of => :old_relations - has_many :old_members, -> { order(:sequence_id) }, :class_name => "OldRelationMember", :foreign_key => [:relation_id, :version], :inverse_of => :old_relation - has_many :old_tags, :class_name => "OldRelationTag", :foreign_key => [:relation_id, :version], :inverse_of => :old_relation + has_many :old_members, -> { order(:sequence_id) }, :class_name => "OldRelationMember", :query_constraints => [:relation_id, :version], :inverse_of => :old_relation + has_many :old_tags, :class_name => "OldRelationTag", :query_constraints => [:relation_id, :version], :inverse_of => :old_relation validates :changeset, :associated => true validates :timestamp, :presence => true diff --git a/app/models/old_relation_member.rb b/app/models/old_relation_member.rb index b556bd13f..4264e0221 100644 --- a/app/models/old_relation_member.rb +++ b/app/models/old_relation_member.rb @@ -15,14 +15,14 @@ # # Foreign Keys # -# relation_members_id_fkey (relation_id => relations.relation_id) +# relation_members_id_fkey (["relation_id", "version"] => relations.["relation_id", "version"]) # class OldRelationMember < ApplicationRecord self.table_name = "relation_members" - self.primary_keys = "relation_id", "version", "sequence_id" + self.primary_key = %w[relation_id version sequence_id] - belongs_to :old_relation, :foreign_key => [:relation_id, :version], :inverse_of => :old_members + 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 belongs_to :member, :polymorphic => true diff --git a/app/models/old_relation_tag.rb b/app/models/old_relation_tag.rb index 2ed8f988d..31399c00d 100644 --- a/app/models/old_relation_tag.rb +++ b/app/models/old_relation_tag.rb @@ -9,14 +9,13 @@ # # Foreign Keys # -# relation_tags_id_fkey (relation_id => relations.relation_id) +# relation_tags_id_fkey (["relation_id", "version"] => relations.["relation_id", "version"]) # class OldRelationTag < ApplicationRecord self.table_name = "relation_tags" - self.primary_keys = "relation_id", "version", "k" - belongs_to :old_relation, :foreign_key => [:relation_id, :version], :inverse_of => :old_tags + belongs_to :old_relation, :query_constraints => [:relation_id, :version], :inverse_of => :old_tags validates :old_relation, :associated => true validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }, :characters => true diff --git a/app/models/old_way.rb b/app/models/old_way.rb index dabf0aafb..a55d3ed00 100644 --- a/app/models/old_way.rb +++ b/app/models/old_way.rb @@ -24,7 +24,6 @@ class OldWay < ApplicationRecord include ConsistencyValidations self.table_name = "ways" - self.primary_keys = "way_id", "version" # NOTE: this needs to be included after the table name changes, or # the queries generated by Redactable will use the wrong table name. @@ -34,8 +33,8 @@ class OldWay < ApplicationRecord belongs_to :redaction, :optional => true belongs_to :current_way, :class_name => "Way", :foreign_key => "way_id", :inverse_of => :old_ways - has_many :old_nodes, :class_name => "OldWayNode", :foreign_key => [:way_id, :version], :inverse_of => :old_way - has_many :old_tags, :class_name => "OldWayTag", :foreign_key => [:way_id, :version], :inverse_of => :old_way + has_many :old_nodes, :class_name => "OldWayNode", :query_constraints => [:way_id, :version], :inverse_of => :old_way + has_many :old_tags, :class_name => "OldWayTag", :query_constraints => [:way_id, :version], :inverse_of => :old_way validates :changeset, :associated => true validates :timestamp, :presence => true diff --git a/app/models/old_way_node.rb b/app/models/old_way_node.rb index 9c8c0c6f3..e031aba10 100644 --- a/app/models/old_way_node.rb +++ b/app/models/old_way_node.rb @@ -13,14 +13,13 @@ # # Foreign Keys # -# way_nodes_id_fkey (way_id => ways.way_id) +# way_nodes_id_fkey (["way_id", "version"] => ways.["way_id", "version"]) # class OldWayNode < ApplicationRecord self.table_name = "way_nodes" - self.primary_keys = "way_id", "version", "sequence_id" - belongs_to :old_way, :foreign_key => [:way_id, :version], :inverse_of => :old_nodes + belongs_to :old_way, :query_constraints => [:way_id, :version], :inverse_of => :old_nodes # A bit messy, referring to current nodes and ways, should do for the data browser for now belongs_to :node belongs_to :way diff --git a/app/models/old_way_tag.rb b/app/models/old_way_tag.rb index dd8968cb3..96ec8baf5 100644 --- a/app/models/old_way_tag.rb +++ b/app/models/old_way_tag.rb @@ -9,14 +9,13 @@ # # Foreign Keys # -# way_tags_id_fkey (way_id => ways.way_id) +# way_tags_id_fkey (["way_id", "version"] => ways.["way_id", "version"]) # class OldWayTag < ApplicationRecord self.table_name = "way_tags" - self.primary_keys = "way_id", "version", "k" - belongs_to :old_way, :foreign_key => [:way_id, :version], :inverse_of => :old_tags + belongs_to :old_way, :query_constraints => [:way_id, :version], :inverse_of => :old_tags validates :old_way, :associated => true validates :k, :v, :allow_blank => true, :length => { :maximum => 255 }, :characters => true diff --git a/app/models/relation_member.rb b/app/models/relation_member.rb index dd47bdcf6..8ff825cee 100644 --- a/app/models/relation_member.rb +++ b/app/models/relation_member.rb @@ -19,7 +19,7 @@ class RelationMember < ApplicationRecord self.table_name = "current_relation_members" - self.primary_keys = "relation_id", "sequence_id" + self.primary_key = %w[relation_id sequence_id] belongs_to :relation belongs_to :member, :polymorphic => true diff --git a/app/models/relation_tag.rb b/app/models/relation_tag.rb index 758ed37cc..500b7d910 100644 --- a/app/models/relation_tag.rb +++ b/app/models/relation_tag.rb @@ -13,7 +13,6 @@ class RelationTag < ApplicationRecord self.table_name = "current_relation_tags" - self.primary_keys = "relation_id", "k" belongs_to :relation diff --git a/app/models/user_preference.rb b/app/models/user_preference.rb index 741aa335a..5b91bbda9 100644 --- a/app/models/user_preference.rb +++ b/app/models/user_preference.rb @@ -12,8 +12,6 @@ # class UserPreference < ApplicationRecord - self.primary_keys = "user_id", "k" - belongs_to :user validates :user, :associated => true diff --git a/app/models/way_node.rb b/app/models/way_node.rb index 0626fb240..c57d3be79 100644 --- a/app/models/way_node.rb +++ b/app/models/way_node.rb @@ -18,7 +18,6 @@ class WayNode < ApplicationRecord self.table_name = "current_way_nodes" - self.primary_keys = "way_id", "sequence_id" belongs_to :way belongs_to :node diff --git a/app/models/way_tag.rb b/app/models/way_tag.rb index 93c4cdece..04ce7abf5 100644 --- a/app/models/way_tag.rb +++ b/app/models/way_tag.rb @@ -13,7 +13,6 @@ class WayTag < ApplicationRecord self.table_name = "current_way_tags" - self.primary_keys = "way_id", "k" belongs_to :way diff --git a/test/controllers/api/nodes_controller_test.rb b/test/controllers/api/nodes_controller_test.rb index 9e680dd06..2d827a077 100644 --- a/test/controllers/api/nodes_controller_test.rb +++ b/test/controllers/api/nodes_controller_test.rb @@ -138,7 +138,7 @@ module Api xml = "" put node_create_path, :params => xml, :headers => auth_header assert_response :bad_request, "node upload did not return bad_request status" - assert_equal ["NodeTag ", " v: is too long (maximum is 255 characters) (\"#{'x' * 256}\")"], @response.body.split(/[0-9]+,foo:/) + assert_match(/ v: is too long \(maximum is 255 characters\) /, @response.body) end def test_show -- 2.45.1