summaryrefslogtreecommitdiff
path: root/db/migrate/20130403003950_add_last_activity_column_into_project.rb
blob: 85e31608d791fe7b7a6517605eccd51bdfc419a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class AddLastActivityColumnIntoProject < ActiveRecord::Migration
  def up
    add_column :projects, :last_activity_at, :datetime
    add_index :projects, :last_activity_at

    select_all('SELECT id, updated_at FROM projects').each do |project|
      project_id = project['id']
      update_date = project['updated_at']
      event = select_one("SELECT created_at FROM events WHERE project_id = #{project_id} ORDER BY created_at DESC LIMIT 1")

      if event && event['created_at']
        update_date = event['created_at']
      end

      execute("UPDATE projects SET last_activity_at = '#{update_date}' WHERE id = #{project_id}")
    end
  end

  def down
    remove_index :projects, :last_activity_at
    remove_column :projects, :last_activity_at
  end
end