Re-add usage of `add_directory_column` for user directory table solutions count (#140)
This commit is contained in:
parent
179611766d
commit
52d4656011
|
@ -4,6 +4,7 @@ en:
|
||||||
alt:
|
alt:
|
||||||
solved:
|
solved:
|
||||||
accepted_notification: "accepted"
|
accepted_notification: "accepted"
|
||||||
|
solutions: "Solutions"
|
||||||
|
|
||||||
solved:
|
solved:
|
||||||
title: "Solved"
|
title: "Solved"
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class RecreateSolutionsColumn < ActiveRecord::Migration[6.1]
|
||||||
|
def up
|
||||||
|
if !ActiveRecord::Base.connection.column_exists?(:directory_items, :solutions)
|
||||||
|
# A reverted commit had added this column previously so some sites have this
|
||||||
|
# column, and some so not. Only add if the DB doesn't already have it.
|
||||||
|
add_column :directory_items, :solutions, :integer, default: 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
remove_column :directory_items, :solutions
|
||||||
|
end
|
||||||
|
end
|
20
plugin.rb
20
plugin.rb
|
@ -616,6 +616,26 @@ SQL
|
||||||
options[:refresh_stream] = true if old_category_allows != new_category_allows
|
options[:refresh_stream] = true if old_category_allows != new_category_allows
|
||||||
end
|
end
|
||||||
|
|
||||||
|
query = "
|
||||||
|
WITH x AS (SELECT
|
||||||
|
u.id user_id,
|
||||||
|
COUNT(DISTINCT ua.id) AS solutions
|
||||||
|
FROM users AS u
|
||||||
|
LEFT OUTER JOIN user_actions AS ua ON ua.user_id = u.id AND ua.action_type = #{UserAction::SOLVED} AND COALESCE(ua.created_at, :since) > :since
|
||||||
|
WHERE u.active
|
||||||
|
AND u.silenced_till IS NULL
|
||||||
|
AND u.id > 0
|
||||||
|
GROUP BY u.id
|
||||||
|
)
|
||||||
|
UPDATE directory_items di SET
|
||||||
|
solutions = x.solutions
|
||||||
|
FROM x
|
||||||
|
WHERE x.user_id = di.user_id
|
||||||
|
AND di.period_type = :period_type
|
||||||
|
AND di.solutions <> x.solutions
|
||||||
|
"
|
||||||
|
add_directory_column("solutions", query: query)
|
||||||
|
|
||||||
add_to_class(:composer_messages_finder, :check_topic_is_solved) do
|
add_to_class(:composer_messages_finder, :check_topic_is_solved) do
|
||||||
return if !SiteSetting.solved_enabled || SiteSetting.disable_solved_education_message
|
return if !SiteSetting.solved_enabled || SiteSetting.disable_solved_education_message
|
||||||
return if !replying? || @topic.blank? || @topic.private_message?
|
return if !replying? || @topic.blank? || @topic.private_message?
|
||||||
|
|
Loading…
Reference in New Issue