Sha256: e593acc3613c9f63f9f3fae4635e3e9773466726a5370ac18a491fc63b56bdc9
Contents?: true
Size: 1.02 KB
Versions: 2
Compression:
Stored size: 1.02 KB
Contents
class AddUniquePairIndices < Cardio::Migration::Schema def change stash_duplicate_cards delete_duplicate_virtuals add_index :cards, %i[left_id right_id], unique: true add_index :card_virtuals, %i[left_id right_id], unique: true end private def stash_duplicate_cards fake_id = -9000 duplicates :cards do |id| stash_card id, fake_id fake_id = fake_id - 1 end end def delete_duplicate_virtuals duplicates :card_virtuals do |id| connection.execute "delete from card_virtuals where id = #{id}" end end def stash_card id, fake_id connection.execute( "UPDATE cards set left_id = #{fake_id}, trash = true where id = #{id}" ) end def duplicates table sql = "SELECT distinct a.id from #{table} a join #{table} b " \ "ON a.left_id = b.left_id AND a.right_id = b.right_id " \ "AND a.id < b.id" connection.select_all(sql).each { |row| yield row["id"].to_i } end def connection ActiveRecord::Base.lease_connection end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
card-1.108.1 | mod/core/data/schema/20200805200729_add_unique_pair_indices.rb |
card-1.108.0 | mod/core/data/schema/20200805200729_add_unique_pair_indices.rb |