From c4bc734b11ba310086b1a7ab28f0d57e6a6030d8 Mon Sep 17 00:00:00 2001 From: Roman Rizzi Date: Mon, 23 Mar 2020 01:08:18 -0300 Subject: [PATCH] FIX: Backfill topic timer duration (#9249) --- app/services/topic_status_updater.rb | 2 +- ...0193612_back_fill_topic_timer_durations.rb | 20 +++++++++++++++++++ lib/post_creator.rb | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20200320193612_back_fill_topic_timer_durations.rb diff --git a/app/services/topic_status_updater.rb b/app/services/topic_status_updater.rb index f3aa541199c..795538cbd0c 100644 --- a/app/services/topic_status_updater.rb +++ b/app/services/topic_status_updater.rb @@ -89,7 +89,7 @@ TopicStatusUpdater = Struct.new(:topic, :user) do def message_for_autoclosed(locale_key) num_minutes = if @topic_status_update&.based_on_last_post - @topic_status_update.duration.hours + (@topic_status_update.duration || 0).hours elsif @topic_status_update&.created_at Time.zone.now - @topic_status_update.created_at else diff --git a/db/migrate/20200320193612_back_fill_topic_timer_durations.rb b/db/migrate/20200320193612_back_fill_topic_timer_durations.rb new file mode 100644 index 00000000000..a4174413e20 --- /dev/null +++ b/db/migrate/20200320193612_back_fill_topic_timer_durations.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class BackFillTopicTimerDurations < ActiveRecord::Migration[6.0] + def up + DB.exec <<~SQL + UPDATE topic_timers + SET duration = 0 + WHERE duration IS NULL AND (execute_at IS NULL OR created_at IS NULL) + SQL + + DB.exec <<~SQL + UPDATE topic_timers + SET duration = EXTRACT(EPOCH FROM execute_at - created_at) / 3600 + WHERE duration IS NULL AND execute_at IS NOT NULL AND created_at IS NOT NULL + SQL + end + + def down + end +end diff --git a/lib/post_creator.rb b/lib/post_creator.rb index 0e89a93ba18..39fe22c2838 100644 --- a/lib/post_creator.rb +++ b/lib/post_creator.rb @@ -470,7 +470,7 @@ class PostCreator if topic_timer && topic_timer.based_on_last_post && - topic_timer.duration > 0 + topic_timer.duration.to_i > 0 @topic.set_or_create_timer(TopicTimer.types[:close], nil,