Move Curated pool updater to Danbooru.

* Move the Curated pool updater from Reportbooru to Danbooru.

* Change the process for selecting curated posts. Previously it was
  every post from the last week with at least three supervotes. This was
  flawed because it included both super-upvotes and super-downvotes. Now
  it's the top 100 posts from the last week, ordered from most super-upvoted
  to least.
This commit is contained in:
evazion
2019-11-23 17:59:18 -06:00
parent b489acfe00
commit aaab527baa
4 changed files with 30 additions and 1 deletions

View File

@@ -0,0 +1,16 @@
module CuratedPoolUpdater
def self.curated_posts(date_range: (1.week.ago..Time.now), limit: 100)
posts = Post.where(created_at: date_range)
posts = posts.joins(:votes).where("post_votes.score": SuperVoter::MAGNITUDE)
posts = Post.where(id: posts.group(:id).order(Arel.sql("COUNT(*) DESC")).limit(limit))
posts
end
def self.update_pool!(pool_id = Danbooru.config.curated_pool_id)
return unless pool_id.present?
CurrentUser.scoped(User.system, "127.0.0.1") do
Pool.find(pool_id).update!(post_ids: curated_posts.pluck(:id))
end
end
end

View File

@@ -21,6 +21,7 @@ module DanbooruMaintenance
TagChangeRequestPruner.warn_all
TagChangeRequestPruner.reject_all
Ban.prune!
CuratedPoolUpdater.update_pool!
ActiveRecord::Base.connection.execute("vacuum analyze") unless Rails.env.test?
rescue Exception => exception