Class: Hyrax::Listeners::MetadataIndexListener

Inherits:
Object
  • Object
show all
Defined in:
app/services/hyrax/listeners/metadata_index_listener.rb

Overview

Note:

This listener makes no attempt to avoid reindexing when no metadata has actually changed, or when real metadata changes won't impact the indexed data. We trust that published metadata update events represent actual changes to object metadata, and that the indexing adapter optimizes reasonably for actual index document contents.

Reindexes resources when their metadata is updated.

Instance Method Summary collapse

Instance Method Details

#on_collection_deleted(event) ⇒ void

This method returns an undefined value.

Remove the resource from the index.

Called when 'collection.deleted' event is published

Parameters:

  • event (Dry::Events::Event)


84
85
86
87
# File 'app/services/hyrax/listeners/metadata_index_listener.rb', line 84

def on_collection_deleted(event)
  return unless resource?(event.payload[:collection])
  Hyrax.index_adapter.delete(resource: event[:collection])
end

#on_collection_metadata_updated(event) ⇒ void

This method returns an undefined value.

Re-index the resource.

Called when 'collection.metadata.updated' event is published

Parameters:

  • event (Dry::Events::Event)


20
21
22
23
# File 'app/services/hyrax/listeners/metadata_index_listener.rb', line 20

def (event)
  return unless resource? event[:collection]
  Hyrax.index_adapter.save(resource: event[:collection])
end

#on_file_metadata_deleted(event) ⇒ void

This method returns an undefined value.

Remove the resource from the index.

Called when 'file.metadata.deleted' event is published

Parameters:

  • event (Dry::Events::Event)


95
96
97
98
# File 'app/services/hyrax/listeners/metadata_index_listener.rb', line 95

def (event)
  return unless resource? event.payload[:metadata]
  Hyrax.index_adapter.delete(resource: event[:metadata])
end

#on_file_metadata_updated(event) ⇒ void

This method returns an undefined value.

Re-index the resource.

Called when 'file.metadata.updated' event is published

Parameters:

  • event (Dry::Events::Event)


31
32
33
34
# File 'app/services/hyrax/listeners/metadata_index_listener.rb', line 31

def (event)
  return unless resource? event[:metadata]
  Hyrax.index_adapter.save(resource: event[:metadata])
end

#on_object_deleted(event) ⇒ void

This method returns an undefined value.

Remove the resource from the index.

Called when 'object.deleted' event is published

Parameters:

  • event (Dry::Events::Event)


73
74
75
76
# File 'app/services/hyrax/listeners/metadata_index_listener.rb', line 73

def on_object_deleted(event)
  return unless resource?(event.payload[:object])
  Hyrax.index_adapter.delete(resource: event[:object])
end

#on_object_membership_updated(event) ⇒ void

This method returns an undefined value.

Re-index the resource.

Called when 'object.membership.updated' event is published

Parameters:

  • event (Dry::Events::Event)


42
43
44
45
46
47
48
49
50
51
# File 'app/services/hyrax/listeners/metadata_index_listener.rb', line 42

def on_object_membership_updated(event)
  resource = event.to_h.fetch(:object) { Hyrax.query_service.find_by(id: event[:object_id]) }
  return unless resource?(resource)

  Hyrax.index_adapter.save(resource: resource)
rescue Valkyrie::Persistence::ObjectNotFoundError => err
  Hyrax.logger.error("Tried to index for an #{event.id} event with " \
                     "payload #{event.payload}, but failed due to error:\n"\
                     "\t#{err.message}")
end

#on_object_metadata_updated(event) ⇒ void

This method returns an undefined value.

Re-index the resource. If the updated object is a file set used as the thumbnail of a parent work, also reindex that parent so thumbnail_alt_text_tesim stays fresh.

Called when 'object.metadata.updated' event is published

Parameters:

  • event (Dry::Events::Event)


61
62
63
64
65
# File 'app/services/hyrax/listeners/metadata_index_listener.rb', line 61

def (event)
  return unless resource? event[:object]
  Hyrax.index_adapter.save(resource: event[:object])
  reindex_parent_for_thumbnail(event[:object]) if event[:object].file_set?
end