FIX: Watched Words (+ Groups) with missing action (#26826)
This defaults the action to - Censor if there are no "replacement" - Replace if there's a "replacement" It also fixes the `WatchedWordGroups` action to the action of one of their `WatchedWords`
This commit is contained in:
parent
ddf7bbfa97
commit
7a7a214c11
|
@ -0,0 +1,34 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class FixWatchedWordsWithoutAction < ActiveRecord::Migration[7.0]
|
||||||
|
def up
|
||||||
|
# Set "censor" action to watched words without replacement
|
||||||
|
execute <<~SQL
|
||||||
|
UPDATE watched_words
|
||||||
|
SET action = 2
|
||||||
|
WHERE action = 0
|
||||||
|
AND LENGTH(COALESCE(replacement, '')) = 0
|
||||||
|
SQL
|
||||||
|
|
||||||
|
# Set "replace" action to watched words with replacement
|
||||||
|
execute <<~SQL
|
||||||
|
UPDATE watched_words
|
||||||
|
SET action = 5
|
||||||
|
WHERE action = 0
|
||||||
|
SQL
|
||||||
|
|
||||||
|
# Update watched word groups with matching action
|
||||||
|
execute <<~SQL
|
||||||
|
UPDATE watched_word_groups
|
||||||
|
SET action = ww.action
|
||||||
|
FROM watched_words ww
|
||||||
|
WHERE ww.watched_word_group_id = watched_word_groups.id
|
||||||
|
AND ww.action != 0
|
||||||
|
AND watched_word_groups.action = 0
|
||||||
|
SQL
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
raise ActiveRecord::IrreversibleMigration
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue