22 lines
618 B
Ruby
22 lines
618 B
Ruby
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
|