Sha256: 8753f6b81c2f72a706b3e298611149080ec55e94ecc218a8b4d3523a65aa769d
Contents?: true
Size: 1.23 KB
Versions: 2
Compression:
Stored size: 1.23 KB
Contents
require 'infopark_component_cache/consistency_guard' module InfoparkComponentCache module Guards # @author Tomasz Przedmojski <tomasz.przedmojski@infopark.de> # # This Guard class ensures that the objects in database do not change inbetween. # (It caches the newest timestamp and compares it to the current value) class LastChanged < ConsistencyGuard def consistent? last_changed_known? && no_changes_since? end def guard! cache.write(cache_key, current_last_changed) end # @return true if a timestamp can be read from cache with {#cache_key} def last_changed_known? cache.exist?(cache_key) && cache.read(cache_key).kind_of?(Time) end # @return true if no obj has been changed since last {#guard!} def no_changes_since? current_last_changed <= cache.read(cache_key) end # @return [String] the cache key for storing {#current_last_changed} def cache_key component.cache_key('last_changed') end # @return [Time] the timestamp of the most recent change to any Obj def current_last_changed RailsConnector::DateAttribute.parse(RailsConnector::Obj.maximum(:last_changed)) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
infopark_component_cache-1.1.0 | lib/infopark_component_cache/guards/last_changed.rb |
infopark_component_cache-1.0.0 | lib/infopark_component_cache/guards/last_changed.rb |