mirror of
https://github.com/discourse/discourse.git
synced 2025-03-29 20:56:09 +08:00
DEV: correct drop logic for columns in post table
We need to recreate the badge_posts view each time we change column on the posts table. The p.* is auto expanded on view create, cascade should not have been used
This commit is contained in:
parent
3ac5df0546
commit
53e0d8fbab
@ -6,12 +6,33 @@ class RemoveAvgTimeFromTopicsPosts < ActiveRecord::Migration[6.0]
|
||||
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 CASCADE
|
||||
ALTER TABLE topics DROP COLUMN IF EXISTS avg_time
|
||||
SQL
|
||||
|
||||
execute <<~SQL
|
||||
ALTER TABLE posts DROP COLUMN IF EXISTS avg_time CASCADE
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user