Welcome to mirror list, hosted at ThFree Co, Russian Federation.

20180425125409_add_poll_participations_unique_index_on_author_and_poll.rb « migrate « db - github.com/diaspora/diaspora.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 2f7376f91d09f998650d243dff954cc486bcebc5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# frozen_string_literal: true

class AddPollParticipationsUniqueIndexOnAuthorAndPoll < ActiveRecord::Migration[5.1]
  def change
    reversible do |change|
      change.up do
        duplicate_query = "WHERE a1.poll_id = a2.poll_id AND a1.author_id = a2.author_id AND a1.id > a2.id"
        if AppConfig.postgres?
          execute("DELETE FROM poll_participations AS a1 USING poll_participations AS a2 #{duplicate_query}")
        else
          execute("DELETE a1 FROM poll_participations a1, poll_participations a2 #{duplicate_query}")
        end
      end
    end

    add_index :poll_participations, %i[poll_id author_id], unique: true
    remove_index :poll_participations, :poll_id
  end
end