Class: EventEngine::EventSchemaMerger
- Inherits:
-
Object
- Object
- EventEngine::EventSchemaMerger
- Defined in:
- lib/event_engine/event_schema_merger.rb
Class Method Summary collapse
- .changed?(compiled_registry, file_registry) ⇒ Boolean
- .merge(compiled_registry, file_registry) ⇒ Object
- .no_schema_change?(latest_schema, compiled_schema) ⇒ Boolean
- .version(latest_version) ⇒ Object
Class Method Details
.changed?(compiled_registry, file_registry) ⇒ Boolean
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/event_engine/event_schema_merger.rb', line 38 def self.changed?(compiled_registry, file_registry) compiled_registry.events.any? do |event| compiled_schema = compiled_registry.latest_for(event) existing_versions = file_registry.versions_for(event) latest_version = existing_versions.max latest_schema = latest_version && file_registry.schema(event, version: latest_version) # New event entirely return true unless latest_schema # Fingerprint mismatch means a new version would be created latest_schema.fingerprint != compiled_schema.fingerprint end end |
.merge(compiled_registry, file_registry) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/event_engine/event_schema_merger.rb', line 3 def self.merge(compiled_registry, file_registry) merged = EventSchema.new file_loaded_schema = file_registry.event_schema file_loaded_schema.events.each do |event| file_loaded_schema.versions_for(event).each do |version| merged.register(file_loaded_schema.schema_for(event, version)) end end # Merge compiled schemas compiled_registry.events.each do |event| compiled_schema = compiled_registry.latest_for(event) existing_versions = merged.versions_for(event) latest_version = existing_versions.max latest_schema = latest_version && merged.schema_for(event, latest_version) if no_schema_change?(latest_schema, compiled_schema) next end new_version = version(latest_version) new_schema = compiled_schema.dup new_schema.event_version = new_version merged.register(new_schema) end merged.finalize! merged end |
.no_schema_change?(latest_schema, compiled_schema) ⇒ Boolean
54 55 56 |
# File 'lib/event_engine/event_schema_merger.rb', line 54 def self.no_schema_change?(latest_schema, compiled_schema) latest_schema && latest_schema.fingerprint == compiled_schema.fingerprint end |
.version(latest_version) ⇒ Object
58 59 60 |
# File 'lib/event_engine/event_schema_merger.rb', line 58 def self.version(latest_version) (latest_version || 0) + 1 end |