Browse Source

Reset pk’s for postgresql after any importing of data with id’s.

Martin Edenhofer 8 years ago
parent
commit
9489dff71d
5 changed files with 37 additions and 9 deletions
  1. 1 5
      db/seeds.rb
  2. 3 0
      lib/auto_wizard.rb
  3. 31 0
      lib/db_helper.rb
  4. 1 2
      lib/import/otrs.rb
  5. 1 2
      lib/import/zendesk.rb

+ 1 - 5
db/seeds.rb

@@ -5447,11 +5447,7 @@ Karma::Activity.create_or_update(
 )
 
 # reset primary key sequences
-if ActiveRecord::Base.connection_config[:adapter] == 'postgresql'
-  ActiveRecord::Base.connection.tables.each do |t|
-    ActiveRecord::Base.connection.reset_pk_sequence!(t)
-  end
-end
+DbHelper.import_post
 
 # install locales and translations
 Locale.create_if_not_exists(

+ 3 - 0
lib/auto_wizard.rb

@@ -146,6 +146,9 @@ returns
       }
     }
 
+    # reset primary key sequences
+    DbHelper.import_post
+
     # remove auto wizard file
     FileUtils.rm auto_wizard_file_location
 

+ 31 - 0
lib/db_helper.rb

@@ -0,0 +1,31 @@
+# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
+
+class DbHelper
+
+=begin
+
+execute post database statements after import (e. g. reset primary key sequences for postgresql)
+
+  DbHelper.import_post
+
+or only for certan tables
+
+  DbHelper.import_post(table_name)
+
+=end
+
+  def self.import_post(table = nil)
+    return if ActiveRecord::Base.connection_config[:adapter] != 'postgresql'
+
+    tables = if table
+               [table]
+             else
+               ActiveRecord::Base.connection.tables
+             end
+
+    tables.each do |t|
+      ActiveRecord::Base.connection.reset_pk_sequence!(t)
+    end
+  end
+
+end

+ 1 - 2
lib/import/otrs.rb

@@ -1526,8 +1526,7 @@ module Import::OTRS
 
   # reset primary key sequences
   def self._reset_pk(table)
-    return if ActiveRecord::Base.connection_config[:adapter] != 'postgresql'
-    ActiveRecord::Base.connection.reset_pk_sequence!(table)
+    DbHelper.import_post(table)
   end
 
   # create customers for article

+ 1 - 2
lib/import/zendesk.rb

@@ -998,8 +998,7 @@ module Import::Zendesk
 
   # reset primary key sequences
   def self._reset_pk(table)
-    return if ActiveRecord::Base.connection_config[:adapter] != 'postgresql'
-    ActiveRecord::Base.connection.reset_pk_sequence!(table)
+    DbHelper.import_post(table)
   end
 
   def get_custom_fields(custom_fields)