Class: Webhookdb::Jobs::IcalendarSync

Inherits:
Object
  • Object
show all
Extended by:
Async::Job
Includes:
Amigo::SemaphoreBackoffJob
Defined in:
lib/webhookdb/jobs/icalendar_sync.rb

Instance Method Summary collapse

Methods included from Async::Job

extended

Instance Method Details

#before_perform(sint_id) ⇒ Object



27
28
29
# File 'lib/webhookdb/jobs/icalendar_sync.rb', line 27

def before_perform(sint_id, *)
  @sint = self.lookup_model(Webhookdb::ServiceIntegration, sint_id)
end

#perform(sint_id, calendar_external_id) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/webhookdb/jobs/icalendar_sync.rb', line 14

def perform(sint_id, calendar_external_id)
  sint = self.lookup_model(Webhookdb::ServiceIntegration, sint_id)
  self.set_job_tags(sint.log_tags.merge(calendar_external_id:))
  row = sint.replicator.admin_dataset { |ds| ds[external_id: calendar_external_id] }
  if row.nil?
    self.set_job_tags(result: "icalendar_sync_row_miss")
    return
  end
  self.logger.debug("icalendar_sync_start")
  sint.replicator.sync_row(row)
  self.set_job_tags(result: "icalendar_synced")
end

#semaphore_backoffObject



34
# File 'lib/webhookdb/jobs/icalendar_sync.rb', line 34

def semaphore_backoff = 60 + (rand * 30)

#semaphore_expiryObject



33
# File 'lib/webhookdb/jobs/icalendar_sync.rb', line 33

def semaphore_expiry = 15.minutes

#semaphore_keyObject



31
# File 'lib/webhookdb/jobs/icalendar_sync.rb', line 31

def semaphore_key = "semaphore-icalendarsync-#{@sint.organization_id}"

#semaphore_sizeObject



32
# File 'lib/webhookdb/jobs/icalendar_sync.rb', line 32

def semaphore_size = @sint.organization.job_semaphore_size