Class: EventEngine::SchemaRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/event_engine/schema_registry.rb

Defined Under Namespace

Classes: RegistryFrozenError, UnknownEventError

Instance Method Summary collapse

Constructor Details

#initialize(event_schema = EventSchema.new) ⇒ SchemaRegistry

Returns a new instance of SchemaRegistry.



7
8
9
10
# File 'lib/event_engine/schema_registry.rb', line 7

def initialize(event_schema = EventSchema.new)
  @event_schema = event_schema
  @loaded = false
end

Instance Method Details

#event_schemaObject



59
60
61
# File 'lib/event_engine/schema_registry.rb', line 59

def event_schema
  @event_schema
end

#eventsObject



16
17
18
# File 'lib/event_engine/schema_registry.rb', line 16

def events
  @event_schema.events
end

#finalize!Object



63
64
65
# File 'lib/event_engine/schema_registry.rb', line 63

def finalize!
  @event_schema.finalize!
end

#latest_for(event_name, domain: nil) ⇒ Object



55
56
57
# File 'lib/event_engine/schema_registry.rb', line 55

def latest_for(event_name, domain: nil)
  @event_schema.latest_for(event_name, domain: domain)
end

#load_from_schema!(schema) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/event_engine/schema_registry.rb', line 24

def load_from_schema!(schema)
  raise RegistryFrozenError, "EventRegistry already loaded" if loaded?
  @event_schema = schema

  @loaded = true
  self
end

#loaded?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/event_engine/schema_registry.rb', line 67

def loaded?
  @loaded == true
end

#register(schema) ⇒ Object



12
13
14
# File 'lib/event_engine/schema_registry.rb', line 12

def register(schema)
  @event_schema.register(schema)
end

#reset!Object



32
33
34
35
# File 'lib/event_engine/schema_registry.rb', line 32

def reset!
  @event_schema = {}
  @loaded = false
end

#schema(event_name, version: nil, domain: nil) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/event_engine/schema_registry.rb', line 37

def schema(event_name, version: nil, domain: nil)
  raise RegistryFrozenError, "EventRegistry not loaded" unless loaded?

  schema =
    if version
      @event_schema.schema_for(event_name, version, domain: domain)
    else
      @event_schema.latest_for(event_name, domain: domain)
    end

  unless schema
    raise UnknownEventError,
          "Unknown #{version ? "version #{version} for " : ""}event: #{event_name}"
  end

  schema
end

#versions_for(event_name, domain: nil) ⇒ Object



20
21
22
# File 'lib/event_engine/schema_registry.rb', line 20

def versions_for(event_name, domain: nil)
  @event_schema.versions_for(event_name, domain: domain)
end