lib/cyclone_lariat/event.rb in cyclone_lariat-0.2.3 vs lib/cyclone_lariat/event.rb in cyclone_lariat-0.3.0

- old
+ new

@@ -1,85 +1,13 @@ # frozen_string_literal: true -require 'luna_park/entities/attributable' -require_relative 'errors' +require_relative 'abstract/message' module CycloneLariat - class Event < LunaPark::Entities::Attributable + class Event < Abstract::Message KIND = 'event' - attr :uuid, String, :new - attr :publisher, String, :new - attr :type, String, :new - attr :client_error - attr :version - attr :data - - attr_reader :sent_at, - :processed_at, - :received_at - def kind KIND - end - - def version=(value) - @version = Integer(value) - end - - def sent_at=(value) - @sent_at = wrap_time(value) - end - - def received_at=(value) - @received_at = wrap_time(value) - end - - def processed_at=(value) - @processed_at = wrap_time(value) - end - - def client_error_message=(txt) - return unless txt - - @client_error ||= Errors::ClientError.new - @client_error.message = txt - end - - def client_error_details=(details) - return unless details - - @client_error ||= Errors::ClientError.new - @client_error.details = details - end - - def ==(other) - kind == other.kind && - uuid == other.uuid && - publisher == other.publisher && - type == other.type && - client_error&.message == other.client_error&.message && - client_error&.details == other.client_error&.details && - version == other.version && - sent_at.to_i == other.sent_at.to_i && - received_at.to_i == other.received_at.to_i - processed_at.to_i == other.processed_at.to_i - end - - def to_json(*args) - hash = serialize - hash[:type] = [kind, hash[:type]].join '_' - hash.to_json(*args) - end - - private - - def wrap_time(value) - case value - when String then Time.parse(value) - when Time then value - when NilClass then nil - else raise ArgumentError, "Unknown type `#{value.class}`" - end end end end