base.rb 1.3 KB

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