view app/lib/cached_fetch.rb @ 237:961d362e42c7 legit-client

The url in entity media isn't unique as they all point to the same thing
author nanaya <me@nanaya.net>
date Sat, 15 Jul 2023 01:47:34 +0900
parents 7a773720d81f
children c800506ae799
line wrap: on
line source

module CachedFetch
  def self.timeline(user_id)
    cached("timeline:#{user_id}") { LegitClient.timeline(user_id)&.[](:timeline) }
  end

  def self.user_by_id(user_id)
    cached("user_by_id:#{user_id}") { LegitClient.user_by_id(user_id)&.[](:user) }
  end

  def self.user_by_username(username)
    cached("user_by_username:#{username}") { LegitClient.user_by_username(username)&.[](:user) }
  end

  def self.cached(key, &block)
    Rails.cache.fetch(key, expires_in: (15 + rand(15)).minutes, &block)
  end
end