2021-01-14 18:36:40 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
|
|
|
|
# Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE
|
|
|
|
module ObjectEvent::ModelExtensions
|
|
|
|
extend ActiveSupport::Concern
|
2021-01-21 22:15:24 +00:00
|
|
|
|
2021-01-14 18:36:40 +00:00
|
|
|
class_methods do
|
2021-01-21 22:15:24 +00:00
|
|
|
|
2021-01-14 18:36:40 +00:00
|
|
|
# Adds the to_event method to a model. Requires `to_builder` method for creating
|
|
|
|
# the Jbuilder object
|
2021-01-21 22:15:24 +00:00
|
|
|
def object_eventable(prefix)
|
2021-01-14 18:36:40 +00:00
|
|
|
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
2021-01-21 22:15:24 +00:00
|
|
|
def object_prefix
|
|
|
|
:#{prefix.to_s}
|
|
|
|
end
|
|
|
|
|
|
|
|
|
2021-01-14 18:36:40 +00:00
|
|
|
def to_event(event_type, *expand)
|
|
|
|
Jbuilder.new do |event|
|
2021-01-21 22:15:24 +00:00
|
|
|
event.id "objevt_" + SecureRandom.alphanumeric(22)
|
2021-01-14 18:36:40 +00:00
|
|
|
event.object 'object_event'
|
|
|
|
event.type event_type
|
|
|
|
event.data do
|
|
|
|
event.object to_builder(*expand)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def to_builder(*expand)
|
|
|
|
raise NotImplementedError.new("to_builder must be implemented in your model")
|
|
|
|
end
|
|
|
|
RUBY
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|