class SynchronizedModel::MessageReceive
Attributes
message[R]
Public Class Methods
new(message)
click to toggle source
# File lib/synchronized_model/message_receive.rb, line 7 def initialize(message) @message = Hash[message.map { |k, v| [k.to_sym, v] }] end
Public Instance Methods
call()
click to toggle source
# File lib/synchronized_model/message_receive.rb, line 11 def call if model update_model else log_model_not_found end end
Private Instance Methods
active_record?()
click to toggle source
# File lib/synchronized_model/message_receive.rb, line 53 def active_record? model.respond_to? :updated_at_was end
chronological_update?(_model)
click to toggle source
# File lib/synchronized_model/message_receive.rb, line 39 def chronological_update?(_model) !(updated_dates[:was] && updated_dates[:was] >= updated_dates[:current]) end
log_model_not_found()
click to toggle source
# File lib/synchronized_model/message_receive.rb, line 61 def log_model_not_found log_message = "Skipped Message ID: #{message[:id]}. " \ "No #{message[:resource]} model configured with SynchronizedModel" SynchronizedModel.logger.info(log_message) end
model()
click to toggle source
# File lib/synchronized_model/message_receive.rb, line 57 def model @model ||= SynchronizedModel::ModelMessage.new(message).model end
sequel_save()
click to toggle source
# File lib/synchronized_model/message_receive.rb, line 32 def sequel_save model.save unless model.errors.empty? fail "Load from queue failed -#{model.class} uuid #{model.uuid}" end end
update_model()
click to toggle source
# File lib/synchronized_model/message_receive.rb, line 21 def update_model if chronological_update?(model) model.updated_at = updated_dates[:current] active_record? ? model.save! : sequel_save else log_message = "Outdated message for #{model.class} " \ "ID: #{model.id}" SynchronizedModel.logger.info(log_message) end end
updated_dates()
click to toggle source
# File lib/synchronized_model/message_receive.rb, line 43 def updated_dates if active_record? { was: model.updated_at_was, current: model.updated_at } else change = model.column_change(:updated_at) || [(model.updated_at - 1.day), model.updated_at] { was: change[0], current: change[1] } end end