Files
danbooru/app/logical/moderator/dashboard/queries/upload.rb
evazion d1d0fe9bc5 /moderator/dashboard: optimize sql queries
* Converts queries to use active record instead of raw sql. This ensures
  that user objects are loaded by rails in the join, so that we
  don't have to issue `User.find` calls to load users one-by-one.

* Use `.includes` to preload associations used in the view, to avoid
  additional N+1 query problems (primarily, calls to link_to_user
  also causing users to be loaded one-by-one).
2017-03-23 04:05:05 -05:00

19 lines
483 B
Ruby

module Moderator
module Dashboard
module Queries
class Upload < ::Struct.new(:user, :count)
def self.all(min_date, max_level)
::Post.joins(:uploader)
.where("posts.created_at > ?", min_date)
.where("users.level <= ?", max_level)
.group(:uploader)
.order("count(*) desc")
.limit(10)
.count
.map { |user, count| new(user, count) }
end
end
end
end
end