about summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/tasks/feeds.rake8
-rw-r--r--lib/tasks/mastodon.rake27
-rw-r--r--lib/tasks/subscriptions.rake13
3 files changed, 27 insertions, 21 deletions
diff --git a/lib/tasks/feeds.rake b/lib/tasks/feeds.rake
deleted file mode 100644
index 8f4dc78b9..000000000
--- a/lib/tasks/feeds.rake
+++ /dev/null
@@ -1,8 +0,0 @@
-namespace :feeds do
-
-  desc "Removes all feeds from Redis, forcing a precompute on next request for each user"
-  task clear: :environment do
-    $redis.keys('feed:*').each { |key| $redis.del(key) }
-  end
-
-end
diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake
new file mode 100644
index 000000000..f59cdfcae
--- /dev/null
+++ b/lib/tasks/mastodon.rake
@@ -0,0 +1,27 @@
+namespace :mastodon do
+  namespace :media do
+    desc 'Removes media attachments that have not been assigned to any status for longer than a day'
+    task clear: :environment do
+      MediaAttachment.where(status_id: nil).where('created_at < ?', 1.day.ago).find_each do |m|
+        m.destroy
+      end
+    end
+  end
+
+  namespace :push do
+    desc 'Unsubscribes from PuSH updates of feeds nobody follows locally'
+    task clear: :environment do
+      Account.where('(select count(f.id) from follows as f where f.target_account_id = accounts.id) = 0').where.not(domain: nil).find_each do |a|
+        a.subscription('').unsubscribe
+        a.update!(verify_token: '', secret: '')
+      end
+    end
+  end
+
+  namespace :feeds do
+    desc 'Clears all timelines so that they would be regenerated on next hit'
+    task clear: :environment do
+      $redis.keys('feed:*').each { |key| $redis.del(key) }
+    end
+  end
+end
diff --git a/lib/tasks/subscriptions.rake b/lib/tasks/subscriptions.rake
deleted file mode 100644
index 77cbd94d3..000000000
--- a/lib/tasks/subscriptions.rake
+++ /dev/null
@@ -1,13 +0,0 @@
-namespace :subscriptions do
-
-  desc "For all remote accounts that have no local followers, unsubscribe from PuSH"
-  task clear: :environment do
-    accounts = Account.where('(select count(f.id) from follows as f where f.target_account_id = accounts.id) = 0').where.not(domain: nil)
-
-    accounts.each do |a|
-      a.subscription('').unsubscribe
-      a.update!(verify_token: '', secret: '')
-    end
-  end
-
-end