mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Track how many user flags are agreed/disagreed/ignored
Display the percentage when reviewing flags.
This commit is contained in:
34
db/migrate/20181031165343_add_flag_stats_to_user.rb
Normal file
34
db/migrate/20181031165343_add_flag_stats_to_user.rb
Normal file
@@ -0,0 +1,34 @@
|
||||
class AddFlagStatsToUser < ActiveRecord::Migration[5.2]
|
||||
def up
|
||||
add_column :user_stats, :flags_agreed, :integer, default: 0, null: false
|
||||
add_column :user_stats, :flags_disagreed, :integer, default: 0, null: false
|
||||
add_column :user_stats, :flags_ignored, :integer, default: 0, null: false
|
||||
|
||||
sql = <<~SQL
|
||||
UPDATE user_stats
|
||||
SET flags_agreed = x.flags_agreed,
|
||||
flags_disagreed = x.flags_disagreed,
|
||||
flags_ignored = x.flags_ignored
|
||||
FROM (
|
||||
SELECT u.id AS user_id,
|
||||
SUM(CASE WHEN pa.disagreed_at IS NOT NULL THEN 1 ELSE 0 END) as flags_disagreed,
|
||||
SUM(CASE WHEN pa.agreed_at IS NOT NULL THEN 1 ELSE 0 END) as flags_agreed,
|
||||
SUM(CASE WHEN pa.deferred_at IS NOT NULL THEN 1 ELSE 0 END) as flags_ignored
|
||||
FROM post_actions AS pa
|
||||
INNER JOIN users AS u ON u.id = pa.user_id
|
||||
WHERE pa.post_action_type_id IN (#{PostActionType.notify_flag_types.values.join(', ')})
|
||||
AND pa.user_id > 0
|
||||
GROUP BY u.id
|
||||
) AS x
|
||||
WHERE x.user_id = user_stats.user_id
|
||||
SQL
|
||||
|
||||
execute sql
|
||||
end
|
||||
|
||||
def down
|
||||
remove_column :user_stats, :flags_agreed
|
||||
remove_column :user_stats, :flags_disagreed
|
||||
remove_column :user_stats, :flags_ignored
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user