class FeatureChannel::Subscriber::MessageProcessor

Constants

OPERATIONS

Public Class Methods

new(message:, model:) click to toggle source
# File lib/feature_channel/subscriber/message_processor.rb, line 12
def initialize(message:, model:)
  @model = model
  @message = message
end

Public Instance Methods

run!() click to toggle source
# File lib/feature_channel/subscriber/message_processor.rb, line 17
def run!
  method(operation_callback).call(model: @model, params: entity_params)
end

Private Instance Methods

create_entity(model:, params:) click to toggle source
# File lib/feature_channel/subscriber/message_processor.rb, line 31
def create_entity(model:, params:)
  model.create(params.slice(*model.column_names))
end
delete_entity(model:, params:) click to toggle source
# File lib/feature_channel/subscriber/message_processor.rb, line 40
def delete_entity(model:, params:)
  entity = model.find(params['id'])
  entity&.delete
end
entity_params() click to toggle source
# File lib/feature_channel/subscriber/message_processor.rb, line 23
def entity_params
  @message['payload'].merge('id' => @message['id'])
end
operation_callback() click to toggle source
# File lib/feature_channel/subscriber/message_processor.rb, line 27
def operation_callback
  OPERATIONS[@message['type']]
end
update_entity(model:, params:) click to toggle source
# File lib/feature_channel/subscriber/message_processor.rb, line 35
def update_entity(model:, params:)
  entity = model.find(params['id'])
  entity&.update(params.slice(*model.column_names))
end