From cebf592e205040306c6a70065ba90e8a3a017934 Mon Sep 17 00:00:00 2001 From: evazion Date: Sat, 18 Mar 2017 04:45:33 -0500 Subject: [PATCH 1/3] /moderator/dashboard: fix post version reference. --- .../moderator/dashboard/queries/tag.rb | 23 ++++++------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/app/logical/moderator/dashboard/queries/tag.rb b/app/logical/moderator/dashboard/queries/tag.rb index a3411bbdb..72999326a 100644 --- a/app/logical/moderator/dashboard/queries/tag.rb +++ b/app/logical/moderator/dashboard/queries/tag.rb @@ -5,26 +5,17 @@ module Moderator attr_reader :user, :count def self.all(min_date, max_level) - sql = <<-EOS - SELECT post_versions.updater_id, count(*) - FROM post_versions - JOIN users ON users.id = post_versions.updater_id - WHERE - post_versions.updated_at > ? - AND users.level <= ? - GROUP BY post_versions.updater_id - ORDER BY count(*) DESC - LIMIT 10 - EOS + return unless PostArchive.enabled? - ActiveRecord::Base.without_timeout do - ActiveRecord::Base.select_all_sql(sql, min_date, max_level).map {|x| new(x)} + records = PostArchive.where("updated_at > ?", min_date).group(:updater).count.map do |user, count| + new(user, count) end + + records.select { |rec| rec.user.level <= max_level }.sort_by(&:count).reverse.take(10) end - def initialize(hash) - @user = ::User.find(hash["updater_id"]) - @count = hash["count"] + def initialize(user, count) + @user, @count = user, count end end end From 8341752931a154ba1bf5a9f56c8ea9970b8cff6a Mon Sep 17 00:00:00 2001 From: evazion Date: Sun, 19 Mar 2017 16:49:01 -0500 Subject: [PATCH 2/3] fixup! /moderator/dashboard: fix post version reference. --- app/logical/moderator/dashboard/report.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/logical/moderator/dashboard/report.rb b/app/logical/moderator/dashboard/report.rb index c3600e8ac..5af5b9a05 100644 --- a/app/logical/moderator/dashboard/report.rb +++ b/app/logical/moderator/dashboard/report.rb @@ -45,7 +45,7 @@ module Moderator end def tags - ActiveRecord::Base.without_timeout do + PostArchive.without_timeout do Queries::Tag.all(min_date, max_level) end end From fe9f31d8711e15c92b1f5ef4da1d380261485d4f Mon Sep 17 00:00:00 2001 From: Albert Yi Date: Mon, 20 Mar 2017 12:31:08 -0700 Subject: [PATCH 3/3] remove timeout block PostArchive isn't subject to statement timeouts so it isn't needed --- app/logical/moderator/dashboard/report.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/logical/moderator/dashboard/report.rb b/app/logical/moderator/dashboard/report.rb index 5af5b9a05..39ce34f8b 100644 --- a/app/logical/moderator/dashboard/report.rb +++ b/app/logical/moderator/dashboard/report.rb @@ -45,9 +45,7 @@ module Moderator end def tags - PostArchive.without_timeout do - Queries::Tag.all(min_date, max_level) - end + Queries::Tag.all(min_date, max_level) end def posts