aboutsummaryrefslogtreecommitdiffstats
path: root/db/migrate/20130816150110_add_statistics_to_public_body.rb
blob: fb3a67e831a74673853a37036dbd41256e40afe3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class AddStatisticsToPublicBody < ActiveRecord::Migration
  def self.up
    add_column :public_bodies, :info_requests_successful_count, :integer
    add_column :public_bodies, :info_requests_not_held_count, :integer
    add_column :public_bodies, :info_requests_overdue_count, :integer
    # We need to set the :info_requests_successful_count and
    # :info_requests_not_held_count columns, since they will
    # subsequently will be updated in after_save /
    # after_destroy. :info_requests_overdue_count, however will be set
    # from a periodically run rake task.
    PublicBody.connection.execute("UPDATE public_bodies
                                     SET info_requests_not_held_count = (SELECT COUNT(*) FROM info_requests
                                                                         WHERE described_state = 'not_held' AND
                                                                               public_body_id = public_bodies.id);")
    PublicBody.connection.execute("UPDATE public_bodies
                                     SET info_requests_successful_count = (SELECT COUNT(*) FROM info_requests
                                                                           WHERE described_state IN ('successful', 'partially_successful') AND
                                                                                 public_body_id = public_bodies.id);")
  end

  def self.down
    remove_column :public_bodies, :info_requests_successful_count
    remove_column :public_bodies, :info_requests_not_held_count
    remove_column :public_bodies, :info_requests_overdue_count
  end
end