about summary refs log tree commit diff
path: root/app/models/instance.rb
diff options
context:
space:
mode:
authorStarfall <us@starfall.systems>2022-03-22 11:16:06 -0500
committerStarfall <us@starfall.systems>2022-03-22 11:16:06 -0500
commitf37056e6c351a08d09c3986586cc7d27bdea85ab (patch)
treec28aaff7e0b70ba0fea07d4335777e6676bff60e /app/models/instance.rb
parent239d67fc2c0ec82617de50a9831bc1a9efc30ecc (diff)
parent9ff119eecd1079e52a8a41d7b8d61520c4303c2f (diff)
Merge remote-tracking branch 'glitch/main'
Diffstat (limited to 'app/models/instance.rb')
-rw-r--r--app/models/instance.rb36
1 files changed, 16 insertions, 20 deletions
diff --git a/app/models/instance.rb b/app/models/instance.rb
index 8949be054..36110ee40 100644
--- a/app/models/instance.rb
+++ b/app/models/instance.rb
@@ -32,35 +32,31 @@ class Instance < ApplicationRecord
     @delivery_failure_tracker ||= DeliveryFailureTracker.new(domain)
   end
 
-  def following_count
-    @following_count ||= Follow.where(account: accounts).count
+  def purgeable?
+    unavailable? || domain_block&.suspend?
   end
 
-  def followers_count
-    @followers_count ||= Follow.where(target_account: accounts).count
+  def unavailable?
+    unavailable_domain.present?
   end
 
-  def reports_count
-    @reports_count ||= Report.where(target_account: accounts).count
+  def failing?
+    failure_days.present? || unavailable?
   end
 
-  def blocks_count
-    @blocks_count ||= Block.where(target_account: accounts).count
-  end
-
-  def public_comment
-    domain_block&.public_comment
+  def to_param
+    domain
   end
 
-  def private_comment
-    domain_block&.private_comment
-  end
+  delegate :exhausted_deliveries_days, to: :delivery_failure_tracker
 
-  def media_storage
-    @media_storage ||= MediaAttachment.where(account: accounts).sum(:file_file_size)
-  end
+  def availability_over_days(num_days, end_date = Time.now.utc.to_date)
+    failures_map    = exhausted_deliveries_days.index_with { true }
+    period_end_at   = exhausted_deliveries_days.last || end_date
+    period_start_at = period_end_at - num_days.days
 
-  def to_param
-    domain
+    (period_start_at..period_end_at).map do |date|
+      [date, failures_map[date]]
+    end
   end
 end