Skip to content

Commit 85b6b06

Browse files
committed
Reset pk sequences for the models that import IDs
1 parent 8b695c7 commit 85b6b06

1 file changed

Lines changed: 12 additions & 5 deletions

File tree

lib/autorequire/data_import.rb

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ def self.import_providers
103103
user.save! if user.new_record?
104104
puts "User #{user.email} #{user.new_record? ? "created" : "already exists"}"
105105
end
106+
107+
reset_pk_sequence_for(Provider)
106108
end
107109

108110
def self.import_languages
@@ -141,14 +143,17 @@ def self.import_topics
141143
puts "#{topic.title} #{topic.new_record? ? "created" : "already exists"}"
142144
topic.save!
143145
end
144-
reset_topic_id_starting_value
146+
reset_pk_sequence_for(Topic)
145147
end
146148

147-
def self.reset_topic_id_starting_value
148-
max_id = Topic.maximum(:id) || 0
149+
def self.reset_pk_sequence_for(model)
150+
table = model.table_name
151+
pk = model.primary_key
152+
seq = "#{table}_#{pk}_seq"
153+
max_id = model.maximum(pk) || 0
149154
new_start_value = max_id + 1
150-
ActiveRecord::Base.connection.execute("SELECT setval('topics_id_seq', #{new_start_value}, false)")
151-
puts "Reset topics ID starting value to #{new_start_value}"
155+
ActiveRecord::Base.connection.execute("SELECT setval('#{seq}', #{new_start_value}, false)")
156+
puts "Reset #{table} ID starting value to #{new_start_value}"
152157
end
153158

154159
def self.import_tags
@@ -165,6 +170,8 @@ def self.import_tags
165170
end
166171
end
167172
puts "Tags import completed"
173+
174+
reset_pk_sequence_for(Tag)
168175
end
169176

170177
def self.import_topic_tags

0 commit comments

Comments
 (0)