Sha256: 04ebfd1cda6bbf10cfa7cf9d6f3cba984b4615435c2562459bad2d5e54f116f8

Contents?: true

Size: 1.07 KB

Versions: 7

Compression:

Stored size: 1.07 KB

Contents

class AddIndexOnPermalinkParentIdAndTaxonomyIdOnSpreeTaxons < ActiveRecord::Migration[5.2]
  def up
    klass   = Spree::Taxon
    columns = %w[permalink parent_id taxonomy_id]

    unless index_exists?(klass.table_name, columns)
      remove_index klass.table_name, columns if index_exists?(klass.table_name, columns)

      say "Find duplicate #{klass} records"
      duplicates = klass.
        select((columns + %w[COUNT(*)]).join(',')).
        group("#{columns.join(',')}").
        having('COUNT(*) > 1').
        map { |row| row.attributes.slice(*columns) }

      say "Delete all but the oldest duplicate #{klass} record"
      duplicates.each do |conditions|
        klass.where(conditions).order(:created_at).drop(1).each(&:destroy)
      end

      duplicates.each do |conditions| puts klass.where(conditions).order(:created_at).drop(1) end

      say "Add unique index to #{klass.table_name} for #{columns.inspect}"
      add_index klass.table_name, columns, unique: true
    end
  end

  def down
    remove_index :spree_taxons, [:permalink, :parent_id, :taxonomy_id]
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
spree_core-4.3.3 db/migrate/20210721120857_add_index_on_permalink_parent_id_and_taxonomy_id_on_spree_taxons.rb
spree_core-4.3.2 db/migrate/20210721120857_add_index_on_permalink_parent_id_and_taxonomy_id_on_spree_taxons.rb
spree_core-4.3.1 db/migrate/20210721120857_add_index_on_permalink_parent_id_and_taxonomy_id_on_spree_taxons.rb
spree_core-4.3.0 db/migrate/20210721120857_add_index_on_permalink_parent_id_and_taxonomy_id_on_spree_taxons.rb
spree_core-4.3.0.rc3 db/migrate/20210721120857_add_index_on_permalink_parent_id_and_taxonomy_id_on_spree_taxons.rb
spree_core-4.3.0.rc2 db/migrate/20210721120857_add_index_on_permalink_parent_id_and_taxonomy_id_on_spree_taxons.rb
spree_core-4.3.0.rc1 db/migrate/20210721120857_add_index_on_permalink_parent_id_and_taxonomy_id_on_spree_taxons.rb