doc/technical/archived_migrations/20160601063448_ren_vw.rb
class RenVw < ActiveRecord::Migration
def change
execute "drop rule update_challenge_views on challenge_views;"
drop_view :challenge_views
create_view :challenge_views, "
SELECT
c.id,
c.organizer_id,
c.challenge,
c.status_cd,
c.description,
c.evaluation_markdown,
c.rules,
c.prizes,
c.resources,
c.created_at,
c.updated_at,
c.dataset_description,
c.submission_instructions,
c.tagline,
c.evaluation,
c.primary_sort_order_cd,
c.secondary_sort_order_cd,
c.description_markdown,
c.rules_markdown,
c.prizes_markdown,
c.resources_markdown,
c.dataset_description_markdown,
c.submission_instructions_markdown,
c.perpetual_challenge,
c.grading_factor,
c.grader_cd,
c.answer_file_s3_key,
c.page_views,
(COUNT(s.*) / 2)::INT AS submissions,
COUNT(cp.*) AS participant_count
FROM challenges c
LEFT OUTER JOIN submissions s
ON s.challenge_id = c.id
LEFT OUTER JOIN (SELECT c.id,
c.id AS challenge_id,
p.id AS participant_id
FROM challenges c,
participants p,
submissions s
WHERE ((s.challenge_id = c.id) AND (s.participant_id = p.id))
UNION
SELECT c.id,
c.id AS challenge_id,
p.id AS participant_id
FROM challenges c,
participants p,
topics t
WHERE ((t.challenge_id = c.id)
AND ((t.participant_id = p.id) OR (EXISTS
( SELECT 'X'
FROM posts ps
WHERE ((ps.topic_id = t.id) AND (ps.participant_id = p.id))))))
) cp ON cp.id = c.id
GROUP BY c.id, c.page_views
"
execute "
CREATE rule update_challenge_views AS
ON UPDATE TO challenge_views
DO instead (UPDATE challenges
SET
organizer_id = new.organizer_id,
challenge = new.challenge,
status_cd = new.status_cd,
description = new.description,
evaluation_markdown = new.evaluation_markdown,
rules = new.rules,
prizes = new.prizes,
resources = new.resources,
created_at = new.created_at,
updated_at = new.updated_at,
dataset_description = new.dataset_description,
submission_instructions = new.submission_instructions,
tagline = new.tagline,
evaluation = new.evaluation,
primary_sort_order_cd = new.primary_sort_order_cd,
secondary_sort_order_cd = new.secondary_sort_order_cd,
description_markdown = new.description_markdown,
rules_markdown = new.rules_markdown,
prizes_markdown = new.prizes_markdown,
resources_markdown = new.resources_markdown,
dataset_description_markdown = new.dataset_description_markdown,
submission_instructions_markdown = new.submission_instructions_markdown,
perpetual_challenge = new.perpetual_challenge,
grading_factor = new.grading_factor,
grader_cd = new.grader_cd,
answer_file_s3_key = new.answer_file_s3_key,
page_views = new.page_views
WHERE challenges.id = new.id);
"
end
end