about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/services/warm_cache_service.rb8
-rw-r--r--app/workers/distribution_worker.rb5
2 files changed, 12 insertions, 1 deletions
diff --git a/app/services/warm_cache_service.rb b/app/services/warm_cache_service.rb
new file mode 100644
index 000000000..091a471ff
--- /dev/null
+++ b/app/services/warm_cache_service.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+class WarmCacheService < BaseService
+  def call(cacheable)
+    full_item = cacheable.class.where(id: cacheable.id).with_includes.first
+    Rails.cache.write(cacheable.cache_key, full_item)
+  end
+end
diff --git a/app/workers/distribution_worker.rb b/app/workers/distribution_worker.rb
index f423d43ae..f4e738d80 100644
--- a/app/workers/distribution_worker.rb
+++ b/app/workers/distribution_worker.rb
@@ -4,7 +4,10 @@ class DistributionWorker
   include Sidekiq::Worker
 
   def perform(status_id)
-    FanOutOnWriteService.new.call(Status.find(status_id))
+    status = Status.find(status_id)
+
+    FanOutOnWriteService.new.call(status)
+    WarmCacheService.new.call(status)
   rescue ActiveRecord::RecordNotFound
     true
   end