Module: SharedBroker::Validation

Defined in:
lib/shared_broker/validation.rb

Defined Under Namespace

Classes: ValidationError

Class Method Summary collapse

Class Method Details

.clearObject



28
29
30
# File 'lib/shared_broker/validation.rb', line 28

def self.clear
  @schemas.clear
end

.register(topic, schema) ⇒ Object



11
12
13
14
15
16
# File 'lib/shared_broker/validation.rb', line 11

def self.register(topic, schema)
  unless schema.respond_to?(:call)
    raise ArgumentError, "Expected schema to respond to :call, got #{schema.class} with value #{schema.inspect}"
  end
  @schemas[topic.to_s] = schema
end

.validate!(topic, message) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'lib/shared_broker/validation.rb', line 18

def self.validate!(topic, message)
  schema = @schemas[topic.to_s]
  return unless schema

  result = schema.call(message)
  unless result.success?
    raise ValidationError, "Schema validation failed for topic #{topic.inspect}. Expected keys: #{schema.rules.keys.inspect}, got payload: #{message.inspect}. Errors: #{result.errors.to_h.inspect}"
  end
end