Class: Clockwork::DatabaseEvents::EventStore

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

Instance Method Summary collapse

Constructor Details

#initialize(block_to_perform_on_event_trigger) ⇒ EventStore

Returns a new instance of EventStore.



30
31
32
33
# File 'lib/clockwork/database_events/event_store.rb', line 30

def initialize(block_to_perform_on_event_trigger)
  @related_events = {}
  @block_to_perform_on_event_trigger = block_to_perform_on_event_trigger
end

Instance Method Details

#register(event, model) ⇒ Object

DatabaseEvents::Manager#register creates a new DatabaseEvents::Event, whose #initialize method registers the new database event with the EventStore by calling this method.



38
39
40
# File 'lib/clockwork/database_events/event_store.rb', line 38

def register(event, model)
  related_events_for(model.id).add(event)
end

#register_new_models(model_objects) ⇒ Object



62
63
64
65
66
# File 'lib/clockwork/database_events/event_store.rb', line 62

def register_new_models(model_objects)
  unregistered_models(model_objects).each do |new_model_object|
    register_with_manager(new_model_object)
  end
end

#unregister_all_except(model_objects) ⇒ Object



48
49
50
51
# File 'lib/clockwork/database_events/event_store.rb', line 48

def unregister_all_except(model_objects)
  ids = model_objects.collect(&:id)
  (@related_events.keys - ids).each{|id| unregister(id) }
end

#update(current_model_objects) ⇒ Object



42
43
44
45
46
# File 'lib/clockwork/database_events/event_store.rb', line 42

def update(current_model_objects)
  unregister_all_except(current_model_objects)
  update_registered_models(current_model_objects)
  register_new_models(current_model_objects)
end

#update_registered_models(model_objects) ⇒ Object



53
54
55
56
57
58
59
60
# File 'lib/clockwork/database_events/event_store.rb', line 53

def update_registered_models(model_objects)
  registered_models(model_objects).each do |model|
    if has_changed?(model)
      unregister(model.id)
      register_with_manager(model)
    end
  end
end