base.rb 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. class Sessions::Backend::Base
  2. def initialize(user, asset_lookup, client, client_id, ttl = 10)
  3. @user = user
  4. @client = client
  5. @client_id = client_id
  6. @ttl = ttl
  7. @asset_lookup = asset_lookup
  8. @last_change = nil
  9. end
  10. def asset_push(record, assets)
  11. class_name = record.class.to_s
  12. @asset_lookup[class_name] ||= {}
  13. @asset_lookup[class_name][record.id] = {
  14. updated_at: record.updated_at,
  15. pushed_at: Time.zone.now,
  16. }
  17. record.assets(assets)
  18. end
  19. def asset_needed?(record)
  20. return false if !asset_needed_by_updated_at?(record.class.to_s, record.id, record.updated_at)
  21. true
  22. end
  23. def asset_needed_by_updated_at?(class_name, record_id, updated_at)
  24. return true if @asset_lookup.blank?
  25. return true if @asset_lookup[class_name].blank?
  26. return true if @asset_lookup[class_name][record_id].blank?
  27. return true if @asset_lookup[class_name][record_id][:updated_at] < updated_at
  28. return true if @asset_lookup[class_name][record_id][:pushed_at].blank?
  29. return true if @asset_lookup[class_name][record_id][:pushed_at] < Time.zone.now - 2.hours
  30. false
  31. end
  32. end