module Moderator module Dashboard module Queries class Comment < ::Struct.new(:comment, :count) def self.all(min_date, max_level) ::CommentVote .joins(comment: [:creator]) .where("comments.score < 0") .where("comment_votes.created_at > ?", min_date) .where("users.level <= ?", max_level) .group(:comment) .having("count(*) >= 3") .order(Arel.sql("count(*) desc")) .limit(10) .count .map { |comment, count| new(comment, count) } end end end end end