mirror of
https://github.com/discourse/discourse-ai.git
synced 2025-03-09 11:48:47 +00:00
30 lines
1.3 KiB
Ruby
30 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
desc "Scan first posts of topics from a date, end date is optional. Usage: rake ai:spam:scan_topics[2024-01-01,2024-02-31]"
|
|
task "ai:spam:scan_topics", %i[start_date end_date] => [:environment] do |_, args|
|
|
start_date = args[:start_date] ? DateTime.parse(args[:start_date]) : 1.day.ago
|
|
end_date = args[:end_date] ? DateTime.parse(args[:end_date]) : Time.current
|
|
|
|
scope = Topic.joins(:posts).where(created_at: start_date..end_date).where("posts.post_number = 1")
|
|
puts "Processing #{scope.count} topics from #{start_date} to #{end_date}"
|
|
scope
|
|
.select("topics.id, posts.id as post_id")
|
|
.find_each(batch_size: 500) do |record|
|
|
Jobs.enqueue(:ai_spam_scan, post_id: record.post_id)
|
|
print "."
|
|
end
|
|
end
|
|
|
|
desc "Scan posts from a date, end date is optional. Usage: rake ai:spam:scan_posts[2024-01-31,2024-02-01]"
|
|
task "ai:spam:scan_posts", %i[start_date end_date] => [:environment] do |_, args|
|
|
start_date = args[:start_date] ? DateTime.parse(args[:start_date]) : 1.day.ago
|
|
end_date = args[:end_date] ? DateTime.parse(args[:end_date]) : Time.current
|
|
|
|
scope = Post.where(created_at: start_date..end_date).select(:id)
|
|
puts "Processing #{scope.count} posts from #{start_date} to #{end_date}"
|
|
scope.find_each(batch_size: 500) do |post|
|
|
Jobs.enqueue(:ai_spam_scan, post_id: post.id)
|
|
print "."
|
|
end
|
|
end
|