Class: RubyEventStore::SerializedRecord

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_event_store/serialized_record.rb

Constant Summary collapse

StringsRequired =
Class.new(StandardError)
BIG_VALUE =
0b110011100100000010010010110011101011110101010101001100111110111

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(event_id:, data:, metadata:, event_type:, timestamp:, valid_at:) ⇒ SerializedRecord

Returns a new instance of SerializedRecord.

Raises:


6
7
8
9
10
11
12
13
14
15
# File 'lib/ruby_event_store/serialized_record.rb', line 6

def initialize(event_id:, data:, metadata:, event_type:, timestamp:, valid_at:)
  raise StringsRequired unless [event_id, event_type].all? { |v| v.instance_of?(String) }
  @event_id   = event_id
  @data       = data
  @metadata   = 
  @event_type = event_type
  @timestamp  = timestamp
  @valid_at   = valid_at
  freeze
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.


17
18
19
# File 'lib/ruby_event_store/serialized_record.rb', line 17

def data
  @data
end

#event_idObject (readonly)

Returns the value of attribute event_id.


17
18
19
# File 'lib/ruby_event_store/serialized_record.rb', line 17

def event_id
  @event_id
end

#event_typeObject (readonly)

Returns the value of attribute event_type.


17
18
19
# File 'lib/ruby_event_store/serialized_record.rb', line 17

def event_type
  @event_type
end

#metadataObject (readonly)

Returns the value of attribute metadata.


17
18
19
# File 'lib/ruby_event_store/serialized_record.rb', line 17

def 
  @metadata
end

#timestampObject (readonly)

Returns the value of attribute timestamp.


17
18
19
# File 'lib/ruby_event_store/serialized_record.rb', line 17

def timestamp
  @timestamp
end

#valid_atObject (readonly)

Returns the value of attribute valid_at.


17
18
19
# File 'lib/ruby_event_store/serialized_record.rb', line 17

def valid_at
  @valid_at
end

Instance Method Details

#==(other) ⇒ Object Also known as: eql?


32
33
34
35
36
37
38
39
40
# File 'lib/ruby_event_store/serialized_record.rb', line 32

def ==(other)
  other.instance_of?(self.class) &&
    other.event_id.eql?(event_id) &&
    other.data.eql?(data) &&
    other..eql?() &&
    other.event_type.eql?(event_type) &&
    other.timestamp.eql?(timestamp) &&
    other.valid_at.eql?(valid_at)
end

#deserialize(serializer) ⇒ Object


53
54
55
56
57
58
59
60
61
62
# File 'lib/ruby_event_store/serialized_record.rb', line 53

def deserialize(serializer)
  Record.new(
    event_id:   event_id,
    event_type: event_type,
    data:       serializer.load(data),
    metadata:   serializer.load(),
    timestamp:  Time.iso8601(timestamp),
    valid_at:   Time.iso8601(valid_at),
  )
end

#hashObject


20
21
22
23
24
25
26
27
28
29
30
# File 'lib/ruby_event_store/serialized_record.rb', line 20

def hash
  [
    self.class,
    event_id,
    data,
    ,
    event_type,
    timestamp,
    valid_at,
  ].hash ^ BIG_VALUE
end

#to_hObject


42
43
44
45
46
47
48
49
50
51
# File 'lib/ruby_event_store/serialized_record.rb', line 42

def to_h
  {
    event_id: event_id,
    data: data,
    metadata: ,
    event_type: event_type,
    timestamp: timestamp,
    valid_at: valid_at,
  }
end