Module: Messaging::Message
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/messaging/message.rb,
lib/messaging/message/from_json.rb
Defined Under Namespace
Modules: ClassMethods
Classes: FromJson
Instance Method Summary
collapse
Instance Method Details
#as_json(*_args) ⇒ Object
100
101
102
|
# File 'lib/messaging/message.rb', line 100
def as_json(*_args)
attributes_as_json.merge(stream_position: stream_position)
end
|
#attributes_as_json(*_args) ⇒ Object
We do our own conversion for datetimes as by default they will only be stored with microseconds, which makes us loose precision when we serialize to json and back to message objects
96
97
98
|
# File 'lib/messaging/message.rb', line 96
def attributes_as_json(*_args)
attributes.transform_values { |v| v.respond_to?(:nsec) ? v.iso8601(9) : v }
end
|
#category ⇒ Object
127
128
129
|
# File 'lib/messaging/message.rb', line 127
def category
Messaging.category(stream_category)
end
|
#key_attribute ⇒ Object
108
109
110
|
# File 'lib/messaging/message.rb', line 108
def key_attribute
self.class.key_attribute
end
|
#message_key ⇒ Object
104
105
106
|
# File 'lib/messaging/message.rb', line 104
def message_key
attributes[key_attribute&.to_sym]
end
|
#message_type ⇒ Object
137
138
139
|
# File 'lib/messaging/message.rb', line 137
def message_type
self.class.to_s
end
|
#publish ⇒ Object
141
142
143
|
# File 'lib/messaging/message.rb', line 141
def publish
Messaging::Publish.(message: self)
end
|
#stream_category ⇒ Object
121
122
123
124
125
|
# File 'lib/messaging/message.rb', line 121
def stream_category
return unless stream_name
stream_name.split('$').first
end
|
#stream_id ⇒ Object
131
132
133
134
135
|
# File 'lib/messaging/message.rb', line 131
def stream_id
return unless stream_name
stream_name.split('$').last
end
|
#stream_name ⇒ Object
116
117
118
119
|
# File 'lib/messaging/message.rb', line 116
def stream_name
return unless self.class.stream_name
instance_exec(&self.class.stream_name)
end
|
#topic ⇒ Object
112
113
114
|
# File 'lib/messaging/message.rb', line 112
def topic
self.class.topic
end
|