Class: EventEngine::EventBuilder
- Inherits:
-
Object
- Object
- EventEngine::EventBuilder
- Defined in:
- lib/event_engine/event_builder.rb
Class Method Summary collapse
Class Method Details
.build(schema:, data:) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/event_engine/event_builder.rb', line 3 def self.build(schema:, data:) validate_inputs!(schema, data) payload = {} schema.payload_fields.each do |field| input = data[field[:from]] next if input.nil? && !field[:required] value = field[:attr] ? input.public_send(field[:attr]) : input payload[field[:name]] = value end { event_name: schema.event_name, event_type: schema.event_type, event_version: schema.event_version, payload: payload } end |
.validate_inputs!(schema, data) ⇒ Object
26 27 28 29 30 31 32 33 34 35 |
# File 'lib/event_engine/event_builder.rb', line 26 def self.validate_inputs!(schema, data) data_keys = data.keys.map(&:to_sym) missing = schema.required_inputs - data_keys raise ArgumentError, "missing required input: #{missing.join(', ')}" if missing.any? allowed = schema.required_inputs + schema.optional_inputs unknown = data_keys - allowed raise ArgumentError, "unknown input: #{unknown.join(', ')}" if unknown.any? end |