Class: Clockwork::DatabaseEventSyncPerformer

Inherits:
Object
  • Object
show all
Defined in:
lib/clockwork/manager_with_database_tasks.rb

Instance Method Summary collapse

Constructor Details

#initialize(manager, model, proc) ⇒ DatabaseEventSyncPerformer

Returns a new instance of DatabaseEventSyncPerformer.



22
23
24
25
26
27
# File 'lib/clockwork/manager_with_database_tasks.rb', line 22

def initialize(manager, model, proc)
  @manager = manager
  @model = model
  @block = proc
  @events = {}
end

Instance Method Details

#add_event(e, task_id) ⇒ Object

store events by task_id in array (array is needed as there is 1 event per At)



50
51
52
53
# File 'lib/clockwork/manager_with_database_tasks.rb', line 50

def add_event(e, task_id)
  @events[task_id] ||= []
  @events[task_id] << e
end

#clockwork_eventsObject



45
46
47
# File 'lib/clockwork/manager_with_database_tasks.rb', line 45

def clockwork_events
  @events.values.flatten
end

#syncObject

Ensure clockwork events reflect database tasks Adds any new tasks, modifies updated ones, and delets removed ones



31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/clockwork/manager_with_database_tasks.rb', line 31

def sync
  model_ids_that_exist = []

  @model.all.each do |db_task|
    model_ids_that_exist << db_task.id
    
    if !event_exists_for_task(db_task) || task_has_changed(db_task)
      recreate_event_for_database_task(db_task)
    end
  end

  remove_deleted_database_tasks(model_ids_that_exist)
end