From 27ef895c8dc59f1e9277dc9e5fa0110b87ff0482 Mon Sep 17 00:00:00 2001 From: Kimball Bighorse Date: Tue, 18 Apr 2023 10:16:59 -0700 Subject: [PATCH 1/3] Backfill timestamp fields for profiles in fraud review or rejected with updated_at changelog: Internal, Data migration, backfill profile timestamps in fraud review or rejected --- ..._profile_fraud_timestamps_from_booleans.rake | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 lib/tasks/backfill_profile_fraud_timestamps_from_booleans.rake diff --git a/lib/tasks/backfill_profile_fraud_timestamps_from_booleans.rake b/lib/tasks/backfill_profile_fraud_timestamps_from_booleans.rake new file mode 100644 index 00000000000..bf1d5ab72fa --- /dev/null +++ b/lib/tasks/backfill_profile_fraud_timestamps_from_booleans.rake @@ -0,0 +1,17 @@ +namespace :profiles do + desc 'If a profile is in review or rejected, store timestamp as updated_at' + + task backfill_fraud_timestamps_from_booleans: :environment do |_task, _args| + Profile.where.not(fraud_review_pending: nil).each do |profile| + puts "Backfilling fraud_reviewing_at for profile #{profile.id}" + updated_at = profile.updated_at + profile.update(fraud_reviewing_at: updated_at) + end + + Profile.where.not(fraud_rejection: nil).each do |profile| + puts "Backfilling fraud_rejected_at for profile #{profile.id}" + updated_at = profile.updated_at + profile.update(fraud_rejected_at: updated_at) + end + end +end From 9e0c1d9520a3a9215fba38e9693a8b8b1d80c438 Mon Sep 17 00:00:00 2001 From: Kimball Bighorse Date: Tue, 18 Apr 2023 10:39:17 -0700 Subject: [PATCH 2/3] Correct target column names --- ...ackfill_profile_fraud_timestamps_from_booleans.rake | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/tasks/backfill_profile_fraud_timestamps_from_booleans.rake b/lib/tasks/backfill_profile_fraud_timestamps_from_booleans.rake index bf1d5ab72fa..eb1765f278c 100644 --- a/lib/tasks/backfill_profile_fraud_timestamps_from_booleans.rake +++ b/lib/tasks/backfill_profile_fraud_timestamps_from_booleans.rake @@ -1,17 +1,17 @@ namespace :profiles do - desc 'If a profile is in review or rejected, store timestamp as updated_at' + desc 'If a profile is in review or rejected, store corresponding timestamp as updated_at' task backfill_fraud_timestamps_from_booleans: :environment do |_task, _args| Profile.where.not(fraud_review_pending: nil).each do |profile| - puts "Backfilling fraud_reviewing_at for profile #{profile.id}" + puts "Backfilling fraud_review_pending_at for profile #{profile.id}" updated_at = profile.updated_at - profile.update(fraud_reviewing_at: updated_at) + profile.update(fraud_review_pending_at: updated_at) end Profile.where.not(fraud_rejection: nil).each do |profile| - puts "Backfilling fraud_rejected_at for profile #{profile.id}" + puts "Backfilling fraud_rejection_at for profile #{profile.id}" updated_at = profile.updated_at - profile.update(fraud_rejected_at: updated_at) + profile.update(fraud_rejection_at: updated_at) end end end From dc165d4599108921f1730fc4762ff670d56c91d4 Mon Sep 17 00:00:00 2001 From: Kimball Bighorse Date: Tue, 18 Apr 2023 12:58:46 -0700 Subject: [PATCH 3/3] Preserve existing profiles with correctly assigned fraud timestamps --- .../backfill_profile_fraud_timestamps_from_booleans.rake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/tasks/backfill_profile_fraud_timestamps_from_booleans.rake b/lib/tasks/backfill_profile_fraud_timestamps_from_booleans.rake index eb1765f278c..5ffc963ca3a 100644 --- a/lib/tasks/backfill_profile_fraud_timestamps_from_booleans.rake +++ b/lib/tasks/backfill_profile_fraud_timestamps_from_booleans.rake @@ -2,13 +2,15 @@ namespace :profiles do desc 'If a profile is in review or rejected, store corresponding timestamp as updated_at' task backfill_fraud_timestamps_from_booleans: :environment do |_task, _args| - Profile.where.not(fraud_review_pending: nil).each do |profile| + # Beware large result sets + Profile.where(fraud_review_pending: true, fraud_review_pending_at: nil).each do |profile| puts "Backfilling fraud_review_pending_at for profile #{profile.id}" updated_at = profile.updated_at profile.update(fraud_review_pending_at: updated_at) end - Profile.where.not(fraud_rejection: nil).each do |profile| + # Beware large result sets + Profile.where(fraud_rejection: true, fraud_rejection_at: nil).each do |profile| puts "Backfilling fraud_rejection_at for profile #{profile.id}" updated_at = profile.updated_at profile.update(fraud_rejection_at: updated_at)