34 lines
915 B
Ruby
34 lines
915 B
Ruby
module Moderator
|
|
module Dashboard
|
|
module Queries
|
|
class Comment
|
|
attr_reader :comment, :count
|
|
|
|
def self.all(min_date, max_level)
|
|
sql = <<-EOS
|
|
SELECT comment_votes.comment_id, count(*)
|
|
FROM comment_votes
|
|
JOIN comments ON comments.id = comment_id
|
|
JOIN users ON users.id = comments.creator_id
|
|
WHERE
|
|
comment_votes.created_at > ?
|
|
AND comments.score < 0
|
|
AND users.level <= ?
|
|
GROUP BY comment_votes.comment_id
|
|
HAVING count(*) >= 3
|
|
ORDER BY count(*) DESC
|
|
LIMIT 10
|
|
EOS
|
|
|
|
ActiveRecord::Base.select_all_sql(sql, min_date, max_level).map {|x| new(x)}
|
|
end
|
|
|
|
def initialize(hash)
|
|
@comment = ::Comment.find(hash["comment_id"])
|
|
@count = hash["count"]
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|