summaryrefslogtreecommitdiffstats
path: root/db/migrate/20150525103953_clear_estimated_hours_on_parent_issues.rb
blob: 4dfc38d2ff39f13e0eb02c9413a9cc3b22a9652b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class ClearEstimatedHoursOnParentIssues < ActiveRecord::Migration[4.2]
  def self.up
    # Clears estimated hours on parent issues
    Issue.where("rgt > lft + 1 AND estimated_hours > 0").update_all :estimated_hours => nil
  end

  def self.down
    table_name = Issue.table_name
    leaves_sum_select = "SELECT SUM(leaves.estimated_hours) FROM (SELECT * FROM #{table_name}) AS leaves" +
      " WHERE leaves.root_id = #{table_name}.root_id AND leaves.lft > #{table_name}.lft AND leaves.rgt < #{table_name}.rgt" +
      " AND leaves.rgt = leaves.lft + 1"

    Issue.where("rgt > lft + 1").update_all "estimated_hours = (#{leaves_sum_select})"
  end
end