]> git.openstreetmap.org Git - rails.git/commitdiff
Replace composite_primary_keys with rails builtin support
authorTom Hughes <tom@compton.nu>
Fri, 6 Oct 2023 21:13:50 +0000 (22:13 +0100)
committerTom Hughes <tom@compton.nu>
Wed, 18 Oct 2023 17:26:14 +0000 (18:26 +0100)
18 files changed:
Gemfile
app/models/changeset_tag.rb
app/models/diary_entry_subscription.rb
app/models/node_tag.rb
app/models/old_node.rb
app/models/old_node_tag.rb
app/models/old_relation.rb
app/models/old_relation_member.rb
app/models/old_relation_tag.rb
app/models/old_way.rb
app/models/old_way_node.rb
app/models/old_way_tag.rb
app/models/relation_member.rb
app/models/relation_tag.rb
app/models/user_preference.rb
app/models/way_node.rb
app/models/way_tag.rb
test/controllers/api/nodes_controller_test.rb

diff --git a/Gemfile b/Gemfile
index e5cb4173fcdef7d84309084af0eb385727c454ab..229f68740e68aad4e771f482beec9ac385dc23ad 100644 (file)
--- 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"
index cf8af6ba929a298dbdd42d061778d3e44c947289..da9fbce51a4732833cd86f0349caf1aab5a2e530 100644 (file)
@@ -12,8 +12,6 @@
 #
 
 class ChangesetTag < ApplicationRecord
-  self.primary_keys = "changeset_id", "k"
-
   belongs_to :changeset
 
   validates :changeset, :associated => true
index ed6de79e45de20ff7fcbc648b845a9c0f12fe652..93b8847f433f655ee673ad339053f5dd460ec126 100644 (file)
@@ -16,8 +16,6 @@
 #
 
 class DiaryEntrySubscription < ApplicationRecord
-  self.primary_keys = "user_id", "diary_entry_id"
-
   belongs_to :user
   belongs_to :diary_entry
 end
index d76a1a0ae865a7e8e86cd3f8c93e3c87c75a1928..18e502439b18499fe505eeaee239a1b2b5d4e5ed 100644 (file)
@@ -13,7 +13,6 @@
 
 class NodeTag < ApplicationRecord
   self.table_name = "current_node_tags"
-  self.primary_keys = "node_id", "k"
 
   belongs_to :node
 
index 077039ac33c2e13c5e0e8f702f1d0d520e2fbd9c..3ec5cd4152939a24bf1816045dfe66bc23b4a262 100644 (file)
@@ -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?
index c710e48f133db67436fbe0b86ff9f94ce4c2a9ea..8f632a6713a04eccc5bc8c1bb8873e8b42698b16 100644 (file)
@@ -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
index 6f122b260873e35af24d432b5db28e7c6f5e666a..5ff12fd586bfb742d2f523bacbf6602df384cec9 100644 (file)
@@ -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
index b556bd13fd5e0d3ba2c123572e967e510230b0ac..4264e022164d8a0acbaed1c3719f21be957c0fc3 100644 (file)
 #
 # 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
 
index 2ed8f988de74677956344cc78537bb4e85688266..31399c00d1dafefa296610403408b55bd918329a 100644 (file)
@@ -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
index dabf0aafbbfc24afc0ef566b24234f3fda4ef8b4..a55d3ed004a72bc678b959022e60ac33661ec199 100644 (file)
@@ -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
index 9c8c0c6f3c1de533371bda729e8e185110723986..e031aba10f2bd47f269e5eea19eb5958dffe7cb1 100644 (file)
 #
 # 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
index dd8968cb30342f4a5f3582a555c17d34206f9a55..96ec8baf5ea9c873fad49261c839cfa59add2672 100644 (file)
@@ -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
index dd47bdcf6d4cbd31a8affa796fc1eabac9166fcc..8ff825cee5e3a8105b784f0faa483638cc7361a1 100644 (file)
@@ -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
index 758ed37cc0d5afd0c9b6b5fa4eb4f9e2a08f3c3c..500b7d910825338fa3ec452b3b184b45a9b706a6 100644 (file)
@@ -13,7 +13,6 @@
 
 class RelationTag < ApplicationRecord
   self.table_name = "current_relation_tags"
-  self.primary_keys = "relation_id", "k"
 
   belongs_to :relation
 
index 741aa335aca9c2f2375cb09bbe0093912e07115e..5b91bbda91badfe4f4242c9fc6a5a563b4cdcd19 100644 (file)
@@ -12,8 +12,6 @@
 #
 
 class UserPreference < ApplicationRecord
-  self.primary_keys = "user_id", "k"
-
   belongs_to :user
 
   validates :user, :associated => true
index 0626fb2403df19b013700617421c5accfd12c296..c57d3be79a8a4b1651ec24354970e2bcdda2e954 100644 (file)
@@ -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
index 93c4cdece779776f8a35c09e05636092bbe04bc7..04ce7abf552e9c2ed4f1565761dd2e531991358c 100644 (file)
@@ -13,7 +13,6 @@
 
 class WayTag < ApplicationRecord
   self.table_name = "current_way_tags"
-  self.primary_keys = "way_id", "k"
 
   belongs_to :way
 
index 9e680dd068cd9c8fa69fdcb37214aa4a137944cb..2d827a077339404c28d8fef9b7feedfa47c85b91 100644 (file)
@@ -138,7 +138,7 @@ module Api
       xml = "<osm><node lat='#{lat}' lon='#{lon}' changeset='#{changeset.id}'><tag k='foo' v='#{'x' * 256}'/></node></osm>"
       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