Sha256: e0b4f90bcb8d5b51d6f1542c7bbd0d5065cd21d52e560c79319c94ea0b82b9d7

Contents?: true

Size: 1001 Bytes

Versions: 4

Compression:

Stored size: 1001 Bytes

Contents

# frozen_string_literal: true

module PubSubModelSync
  class ServiceBase
    SERVICE_KEY = 'service_model_sync'

    def listen_messages
      raise 'method :listen_messages must be defined in service'
    end

    def publish(_data, _attributes)
      raise 'method :publish must be defined in service'
    end

    def stop
      raise 'method :stop must be defined in service'
    end

    private

    # @param payload (String JSON): '{"data":{}, "attributes":{..}}'
    #   refer: PubSubModelSync::MessagePublisher(.publish_model | .publish_data)
    def perform_message(payload)
      data, attrs = parse_message_payload(payload)
      args = [data, attrs[:klass], attrs[:action]]
      PubSubModelSync::MessageProcessor.new(*args).process
    end

    def parse_message_payload(payload)
      message_payload = JSON.parse(payload).symbolize_keys
      data = message_payload[:data].symbolize_keys
      attrs = message_payload[:attributes].symbolize_keys
      [data, attrs]
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
pub_sub_model_sync-0.4.2.1 lib/pub_sub_model_sync/service_base.rb
pub_sub_model_sync-0.4.2 lib/pub_sub_model_sync/service_base.rb
pub_sub_model_sync-0.4.1 lib/pub_sub_model_sync/service_base.rb
pub_sub_model_sync-0.4.0 lib/pub_sub_model_sync/service_base.rb