Sha256: ae79ea7a54c1b3823ae131e54ea135926720435fdb9e813bc48186efa0b039da

Contents?: true

Size: 1.35 KB

Versions: 34

Compression:

Stored size: 1.35 KB

Contents

class PopulateIssuesClosedOn < ActiveRecord::Migration
  def up
    closed_status_ids = IssueStatus.where(:is_closed => true).pluck(:id)
    if closed_status_ids.any?
      # First set closed_on for issues that have been closed once
      closed_status_values = closed_status_ids.map {|status_id| "'#{status_id}'"}.join(',')
      subselect = "SELECT MAX(#{Journal.table_name}.created_on)" +
        " FROM #{Journal.table_name}, #{JournalDetail.table_name}" +
        " WHERE #{Journal.table_name}.id = #{JournalDetail.table_name}.journal_id" +
        " AND #{Journal.table_name}.journalized_type = 'Issue' AND #{Journal.table_name}.journalized_id = #{Issue.table_name}.id" +
        " AND #{JournalDetail.table_name}.property = 'attr' AND #{JournalDetail.table_name}.prop_key = 'status_id'" +
        " AND #{JournalDetail.table_name}.old_value NOT IN (#{closed_status_values})" +
        " AND #{JournalDetail.table_name}.value IN (#{closed_status_values})"
      Issue.update_all "closed_on = (#{subselect})"

      # Then set closed_on for closed issues that weren't up updated by the above UPDATE
      # No journal was found so we assume that they were closed on creation
      Issue.where({:status_id => closed_status_ids, :closed_on => nil}).
               update_all("closed_on = created_on")
    end
  end

  def down
    Issue.update_all :closed_on => nil
  end
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
redmine_extensions-0.0.39 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.0.38 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.0.37 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.1.11 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.1.10 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.0.36 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.0.34 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.1.09 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.1.07 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.1.06 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.1.05 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.1.04 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.1.03 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.0.33 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.1.02 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.1.01 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.0.29 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.0.28 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.0.27 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb
redmine_extensions-0.0.24 spec/redmine/db/migrate/20130215111141_populate_issues_closed_on.rb