FIX: correct user_history that was off by one
This commit is contained in:
parent
9f05361f14
commit
956e3ad208
|
@ -0,0 +1,34 @@
|
||||||
|
class FixIncorrectUserHistory < ActiveRecord::Migration
|
||||||
|
def up
|
||||||
|
# see https://meta.discourse.org/t/old-user-suspension-reasons-have-gone-missing/3730
|
||||||
|
# we had a window of 21 days where all user history records with action > 5 were off by one
|
||||||
|
#
|
||||||
|
# to correct we are doing this https://meta.discourse.org/t/enums-that-are-used-in-tables-need-to-be-stable/37622
|
||||||
|
#
|
||||||
|
# This migration hunts for date stuff started going wrong and date it started being good and corrects the data
|
||||||
|
|
||||||
|
|
||||||
|
# this is a :auto_trust_level_change mislabled as :check_email
|
||||||
|
# impersonate that was actually delete topic
|
||||||
|
condition = <<CLAUSE
|
||||||
|
(action = 16 AND previous_value in ('0','1','2','3','4')) OR
|
||||||
|
(action = 19 AND target_user_id IS NULL AND details IS NOT NULL)
|
||||||
|
CLAUSE
|
||||||
|
|
||||||
|
first_wrong_id = execute("SELECT min(id) FROM user_histories WHERE #{condition}").values[0][0].to_i
|
||||||
|
last_wrong_id = execute("SELECT max(id) FROM user_histories WHERE #{condition}").values[0][0].to_i
|
||||||
|
|
||||||
|
if first_wrong_id < last_wrong_id
|
||||||
|
msg = "Correcting user history records from id: #{first_wrong_id} to #{last_wrong_id} (see: https://meta.discourse.org/t/old-user-suspension-reasons-have-gone-missing/3730)"
|
||||||
|
|
||||||
|
execute("UPDATE user_histories SET action = action - 1
|
||||||
|
WHERE action > 5 AND id >= #{first_wrong_id} AND id <= #{last_wrong_id}")
|
||||||
|
|
||||||
|
execute("INSERT INTO user_histories(action, acting_user_id, details, created_at, updated_at)
|
||||||
|
VALUES (22, -1, '#{msg}', current_timestamp, current_timestamp)")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue