discourse/app/services/tracked_topics_updater.rb

25 lines
644 B
Ruby

# frozen_string_literal: true
class TrackedTopicsUpdater
def initialize(user_id, threshold)
@id = user_id
@threshold = threshold
end
def call
topic_users = TopicUser.where(notifications_reason_id: nil, user_id: @id)
if @threshold < 0
topic_users.update_all(notification_level: TopicUser.notification_levels[:regular])
else
topic_users.update_all(
[
"notification_level = CASE WHEN total_msecs_viewed < ? THEN ? ELSE ? END",
@threshold,
TopicUser.notification_levels[:regular],
TopicUser.notification_levels[:tracking],
],
)
end
end
end