about summary refs log tree commit diff
path: root/app/models/follow_recommendation.rb
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2021-05-05 22:04:52 +0200
committerGitHub <noreply@github.com>2021-05-05 22:04:52 +0200
commitd9ae3db8d5543cf0b7fa44186c191c9bb2472d23 (patch)
tree512309009b33d99557dbfbc7d2513b1b3792bf60 /app/models/follow_recommendation.rb
parent351c74459084ccffce1333b57c2af9a6b55cac8d (diff)
Improve performance of follow recommendation scheduler (#16159)
Express follow_recommendations in terms of account_summaries rather than
accounts, integrate filters that are unconditionally used, and materialize
the resulting view.

This should result in the bulk of the computation being performed only once
instead of **once per recommendation language**.
Diffstat (limited to 'app/models/follow_recommendation.rb')
-rw-r--r--app/models/follow_recommendation.rb6
1 files changed, 4 insertions, 2 deletions
diff --git a/app/models/follow_recommendation.rb b/app/models/follow_recommendation.rb
index 6670b6560..1ed6dc49b 100644
--- a/app/models/follow_recommendation.rb
+++ b/app/models/follow_recommendation.rb
@@ -14,9 +14,11 @@ class FollowRecommendation < ApplicationRecord
   belongs_to :account_summary, foreign_key: :account_id
   belongs_to :account, foreign_key: :account_id
 
-  scope :safe, -> { joins(:account_summary).merge(AccountSummary.safe) }
   scope :localized, ->(locale) { joins(:account_summary).merge(AccountSummary.localized(locale)) }
-  scope :filtered, -> { joins(:account_summary).merge(AccountSummary.filtered) }
+
+  def self.refresh
+    Scenic.database.refresh_materialized_view(table_name, concurrently: true, cascade: false)
+  end
 
   def readonly?
     true