module ActiveCash::Cache

Public Instance Methods

adapter() click to toggle source
# File lib/active_cash/cache.rb, line 90
def adapter
  ActiveCash::Adapter
end
delete(find_by:, method_name:, returns:, klass:) click to toggle source
# File lib/active_cash/cache.rb, line 71
def delete(find_by:, method_name:, returns:, klass:)
  key_name = get_key_name(klass, method_name, find_by)
  adapter.delete_value(key_name)
end
exists?(find_by:, method_name:, returns:, klass:) click to toggle source
# File lib/active_cash/cache.rb, line 4
def exists?(find_by:, method_name:, returns:, klass:)
  key_name = get_key_name(klass, method_name, find_by)
  cached_value = adapter.get_value(key_name)
  return cached_value unless cached_value.nil?

  instance = klass.to_s.constantize.find_by(find_by)
  adapter.set_value_with_return(
    key_name, !instance.nil?, instance.try(returns)
  )
end
get_key_name(klass, method_name, hash_params) click to toggle source
# File lib/active_cash/cache.rb, line 86
def get_key_name(klass, method_name, hash_params)
  "#{klass}:#{method_name}:#{hash_params.values.join('-')}"
end
instance_exists?(find_by:, method_name:, instance:, returns:) click to toggle source
# File lib/active_cash/cache.rb, line 15
def instance_exists?(find_by:, method_name:, instance:, returns:)
  key_name = get_key_name(instance.class, method_name, find_by)
  cached_value = adapter.get_value(key_name)
  return cached_value unless cached_value.nil?

  instance_update(
    find_by: find_by, method_name: method_name, instance: instance,
    returns: returns
  )
end
instance_update(find_by:, method_name:, returns:, instance:) click to toggle source
# File lib/active_cash/cache.rb, line 26
def instance_update(find_by:, method_name:, returns:, instance:)
  key_name = get_key_name(instance.class, method_name, find_by)

  find_by.keys.each_with_index do |key, i|
    if instance.send(key) != find_by.values[i]
      return adapter.set_value_with_return(key_name, false, returns)
    end
  end

  adapter.set_value_with_return(key_name, true, returns)#instance.try(returns))
end
instance_update_if_exists(find_by:, method_name:, returns:, instance:) click to toggle source
# File lib/active_cash/cache.rb, line 59
def instance_update_if_exists(find_by:, method_name:, returns:, instance:)
  key_name = get_key_name(instance.class, method_name, find_by)

  cached_value = adapter.get_value(key_name)
  return true if cached_value.nil?

  instance_update(
    find_by: find_by, method_name: method_name, instance: instance,
    returns: returns
  )
end
instance_updated?(find_by:, instance:, returns:) click to toggle source
# File lib/active_cash/cache.rb, line 38
def instance_updated?(find_by:, instance:, returns:)
  changes = OpenStruct.new(instance.previous_changes)
  return true if changes.send(returns) != nil

  (find_by.is_a?(Array) ? find_by : find_by.keys).each_with_index do |key, i|
    if changes.send(key) != nil
      return true
    end
  end
end
old_instance_update(find_by:, method_name:, returns:, instance:) click to toggle source
# File lib/active_cash/cache.rb, line 49
def old_instance_update(find_by:, method_name:, returns:, instance:)
  #old values
  instance_update_if_exists(
    find_by: Hash[find_by.map {|k, v| ["#{k}_was", v] }],
    method_name: method_name,
    returns: returns,
    instance: instance
  )
end
set_false(find_by:, method_name:, returns:, klass:) click to toggle source
# File lib/active_cash/cache.rb, line 76
def set_false(find_by:, method_name:, returns:, klass:)
  key_name = get_key_name(klass, method_name, find_by)
  adapter.set_value_with_return(key_name, false, returns)
end
set_true(find_by:, method_name:, returns:, klass:) click to toggle source
# File lib/active_cash/cache.rb, line 81
def set_true(find_by:, method_name:, returns:, klass:)
  key_name = get_key_name(klass, method_name, find_by)
  adapter.set_value_with_return(key_name, true, returns)
end