Sha256: 38f85ec482efa100ac450b898dec5d634a4ee53c579c7644415a441a3612af38

Contents?: true

Size: 1005 Bytes

Versions: 5

Compression:

Stored size: 1005 Bytes

Contents

require 'lru_redux'

module Stitches::ApiClientAccessWrapper

  def self.fetch_for_key(key)
    if cache_enabled
      fetch_for_key_from_cache(key)
    else
      fetch_for_key_from_db(key)
    end
  end

  def self.fetch_for_key_from_cache(key)
    api_key_cache.getset(key) do
      fetch_for_key_from_db(key)
    end
  end

  def self.fetch_for_key_from_db(key)
    if ::ApiClient.column_names.include?("enabled")
      ::ApiClient.find_by(key: key, enabled: true)
    else
      ActiveSupport::Deprecation.warn('api_keys is missing "enabled" column.  Run "rails g stitches:add_enabled_to_api_clients"')
      ::ApiClient.find_by(key: key)
    end
  end

  def self.clear_api_cache
    api_key_cache.clear if cache_enabled
  end

  def self.api_key_cache
    @api_key_cache ||= LruRedux::TTL::ThreadSafeCache.new(
      Stitches.configuration.max_cache_size,
      Stitches.configuration.max_cache_ttl,
    )
  end

  def self.cache_enabled
    Stitches.configuration.max_cache_ttl.positive?
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
stitches-4.0.2 lib/stitches/api_client_access_wrapper.rb
stitches-4.1.0RC2 lib/stitches/api_client_access_wrapper.rb
stitches-4.0.1 lib/stitches/api_client_access_wrapper.rb
stitches-4.0.0 lib/stitches/api_client_access_wrapper.rb
stitches-4.0.0.RC1 lib/stitches/api_client_access_wrapper.rb