123456789101112131415161718192021222324252627282930313233343536373839 |
- # frozen_string_literal: true
- class PushUpdateWorker
- include Sidekiq::Worker
- include Redisable
- def perform(account_id, status_id, timeline_id = nil, options = {})
- @status = Status.find(status_id)
- @account_id = account_id
- @timeline_id = timeline_id || "timeline:#{account_id}"
- @options = options.symbolize_keys
- render_payload!
- publish!
- rescue ActiveRecord::RecordNotFound
- true
- end
- private
- def render_payload!
- @payload = StatusCacheHydrator.new(@status).hydrate(@account_id)
- end
- def message
- Oj.dump(
- event: update? ? :'status.update' : :update,
- payload: @payload
- )
- end
- def publish!
- redis.publish(@timeline_id, message)
- end
- def update?
- @options[:update]
- end
- end
|