about summary refs log tree commit diff
path: root/lib/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tasks')
-rw-r--r--lib/tasks/monsterfork.rake50
1 files changed, 33 insertions, 17 deletions
diff --git a/lib/tasks/monsterfork.rake b/lib/tasks/monsterfork.rake
index efc45b2fe..465299562 100644
--- a/lib/tasks/monsterfork.rake
+++ b/lib/tasks/monsterfork.rake
@@ -1,24 +1,40 @@
-namespace :monsterfork do
-  desc '(Re-)Index statuses for search.'
-  task index_statuses: :environment do
-    include TextHelper
+# frozen_string_literal: true
+
+def index_statuses(statuses_query)
+  include TextHelper
 
-    i = 0
-    total = Status.count
+  i = 0
+  total = statuses_query.count
 
-    Status.find_in_batches do |statuses|
-      ActiveRecord::Base.logger.info("Indexing status #{1+i} of #{total}.")
-      ActiveRecord::Base.logger.silence do
-        i += statuses.count
-        statuses.each do |s|
-          begin
-            next if s.destroyed?
-            s.update_column(:normalized_text, normalize_status(s))
-          rescue ActiveRecord::RecordNotFound
-            true
-          end
+  statuses_query.find_in_batches do |statuses|
+    ActiveRecord::Base.logger.info("Indexing status #{1+i} of #{total}.")
+    ActiveRecord::Base.logger.silence do
+      i += statuses.count
+      statuses.each do |s|
+        begin
+          next if s.destroyed?
+          s.update_column(:normalized_text, normalize_status(s))
+        rescue ActiveRecord::RecordNotFound
+          true
         end
       end
     end
   end
 end
+
+namespace :monsterfork do
+  desc 'Index statuses for search that have not been indexed yet.'
+  task index_statuses: :environment do
+    index_statuses(Status.where(normalized_text: ''))
+  end
+
+  desc 'Reindex all statuses for search.'
+  task reindex_statuses: :environment do
+    index_statuses(Status)
+  end
+
+  desc 'Reindex statuses containing media with descriptions for search.'
+  task reindex_media_descs: :environment do
+    index_statuses(Status.left_outer_joins(:media_attachments).where('media_attachments.description IS NOT NULL'))
+  end
+end