Class: EventEngine::Definition::SchemaRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/event_engine/definition/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.



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

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

Instance Method Details

#event_schemaObject



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

def event_schema
  @event_schema
end

#eventsObject



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

def events
  @event_schema.events
end

#finalize!Object



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

def finalize!
  @event_schema.finalize!
end

#latest_for(event_name, domain: nil) ⇒ Object



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

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

#load_from_schema!(schema) ⇒ Object



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

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

  @loaded = true
  self
end

#loaded?Boolean

Returns:

  • (Boolean)


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

def loaded?
  @loaded == true
end

#register(schema) ⇒ Object



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

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

#reset!Object



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

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

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



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

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



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

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