module Card::Fetch::Store

lazy cache updates based on results

Public Instance Methods

eager_caching?() click to toggle source
# File lib/card/fetch/store.rb, line 30
def eager_caching?
  opts[:eager_cache] && mark.name? && mark.absolute? && new_opts.present?
end
fresh_from_db?() click to toggle source
# File lib/card/fetch/store.rb, line 16
def fresh_from_db?
  @fresh_from_db
end
needs_prep?() click to toggle source
# File lib/card/fetch/store.rb, line 38
def needs_prep?
  return unless card.present?

  !(skip_modules? || card.patterns?)
end
new_card_needed?() click to toggle source
# File lib/card/fetch/store.rb, line 44
def new_card_needed?
  !(card.present? && (card.type_id.present? || skip_type_lookup?))
end
new_for_cache() click to toggle source

instantiate a card as a cache placeholder

# File lib/card/fetch/store.rb, line 21
def new_for_cache
  return unless new_for_cache?

  args = { name: mark, skip_modules: true }
  args[:type_lookup] = :skip if skip_type_lookup?
  args.merge! new_opts.slice(:type, :type_id, :type_code) if eager_caching?
  @card = Card.new args
end
new_for_cache?() click to toggle source
# File lib/card/fetch/store.rb, line 34
def new_for_cache?
  reusable? && new_card_needed?
end
reusable?() click to toggle source
# File lib/card/fetch/store.rb, line 48
def reusable?
  !(mark.is_a?(Integer) || (mark.blank? && !opts[:new]))
end
update_cache() click to toggle source
# File lib/card/fetch/store.rb, line 5
def update_cache
  return unless update_cache?

  card.prep_modules_for_caching unless skip_modules?
  Card.write_to_cache card, local_only?
end
update_cache?() click to toggle source
# File lib/card/fetch/store.rb, line 12
def update_cache?
  (fresh_from_db? || new_for_cache || needs_prep?) && !card&.uncacheable?
end