From 0b45c3754980ab9707d812b58ff047d45c4773e1 Mon Sep 17 00:00:00 2001 From: DharmaPriya-V Date: Tue, 16 May 2023 10:56:11 +0530 Subject: [PATCH] task(AB#0000): Set Model level TTL --- lib/identity_cache/encoder.rb | 1 + lib/identity_cache/fallback_fetcher.rb | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/identity_cache/encoder.rb b/lib/identity_cache/encoder.rb index 27b4f669..71015eb5 100644 --- a/lib/identity_cache/encoder.rb +++ b/lib/identity_cache/encoder.rb @@ -29,6 +29,7 @@ def coder_from_record(record, klass) coder = {} coder[:attributes] = record.attributes_before_type_cast.dup + coder[:expire_time] = record.class.name.constantize::EXPIRE_CACHE if defined?(record.class.name.constantize::EXPIRE_CACHE) recursively_embedded_associations = klass.send(:recursively_embedded_associations) id_embedded_has_manys = klass.cached_has_manys.select { |_, association| association.embedded_by_reference? } diff --git a/lib/identity_cache/fallback_fetcher.rb b/lib/identity_cache/fallback_fetcher.rb index 76216089..2d950353 100644 --- a/lib/identity_cache/fallback_fetcher.rb +++ b/lib/identity_cache/fallback_fetcher.rb @@ -26,7 +26,7 @@ def fetch_multi(keys) unless missed_keys.empty? replacement_results = yield missed_keys missed_keys.zip(replacement_results) do |key, replacement_result| - @cache_backend.write(key, replacement_result) if IdentityCache.should_fill_cache? + write_cache(key, replacement_result) if IdentityCache.should_fill_cache? results[key] = replacement_result end end @@ -41,9 +41,17 @@ def fetch(key, **cache_fetcher_options) result = @cache_backend.read(key) if result.nil? result = yield - @cache_backend.write(key, result) if IdentityCache.should_fill_cache? + write_cache(key, result) if IdentityCache.should_fill_cache? end result end + + def write_cache(key, result) + if (result.is_a? Hash) && result[:expire_time].present? + @cache_backend.write(key, result, expires_in: result[:expire_time]) + else + @cache_backend.write(key, result) + end + end end end