42 lines
1.1 KiB
Ruby
42 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class RemoveAvgTimeFromTopicsPosts < ActiveRecord::Migration[6.0]
|
|
disable_ddl_transaction!
|
|
|
|
def up
|
|
# this makes it re-runnable and also works if it was not created initially
|
|
execute <<~SQL
|
|
ALTER TABLE topics DROP COLUMN IF EXISTS avg_time
|
|
SQL
|
|
|
|
ActiveRecord::Base.transaction do
|
|
execute "DROP VIEW badge_posts"
|
|
|
|
execute <<~SQL
|
|
ALTER TABLE posts DROP COLUMN IF EXISTS avg_time
|
|
SQL
|
|
|
|
# we must recreate this view every time we amend posts
|
|
# p.* is auto expanded and persisted into the view definition
|
|
# at create time
|
|
execute <<~SQL
|
|
CREATE VIEW badge_posts AS
|
|
SELECT p.*
|
|
FROM posts p
|
|
JOIN topics t ON t.id = p.topic_id
|
|
JOIN categories c ON c.id = t.category_id
|
|
WHERE c.allow_badges AND
|
|
p.deleted_at IS NULL AND
|
|
t.deleted_at IS NULL AND
|
|
NOT c.read_restricted AND
|
|
t.visible AND
|
|
p.post_type IN (1,2,3)
|
|
SQL
|
|
end
|
|
end
|
|
|
|
def down
|
|
# do nothing re-runnable
|
|
end
|
|
end
|