Class: TypesenseModel::SyncJob

Inherits:
ActiveJob::Base
  • Object
show all
Defined in:
lib/typesense_model/sync_job.rb

Instance Method Summary collapse

Instance Method Details

#perform(class_name, id, action) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/typesense_model/sync_job.rb', line 8

def perform(class_name, id, action)
  klass = class_name.constantize

  case action.to_s
  when "remove"
    proxy = ActiveRecordExtension::TypesenseProxy.for(klass)
    proxy.delete(id)
  else
    record = klass.respond_to?(:find_by) ? klass.find_by(id: id) : nil
    record&.sync_to_typesense_now
  end
rescue Typesense::Error => e
  TypesenseModel.logger.error("Async Typesense #{action} failed for #{class_name}##{id}: #{e.message}")
end