Class: Maglev::DependencyGraph
- Inherits:
-
Object
- Object
- Maglev::DependencyGraph
- Defined in:
- lib/maglev/dependency_graph.rb
Defined Under Namespace
Classes: Edge
Class Method Summary collapse
- .capture_previous_dependents_for(record) ⇒ Object
- .register(schema) ⇒ Object
- .reindex_dependents_for(record) ⇒ Object
Class Method Details
.capture_previous_dependents_for(record) ⇒ Object
34 35 36 37 |
# File 'lib/maglev/dependency_graph.rb', line 34 def capture_previous_dependents_for(record) owners = edges_for(record.class).flat_map { |edge| previous_owners_for(record, edge) } record.instance_variable_set(:@maglev_previous_dependent_owners, owners) end |
.register(schema) ⇒ Object
10 11 12 13 14 15 16 17 18 |
# File 'lib/maglev/dependency_graph.rb', line 10 def register(schema) schema.relations.each do |relation| edge = Edge.new(schema.model_class, relation., relation.name, relation.inverse) next if edges_for(relation.).any? { |existing| same_edge?(existing, edge) } edges_for(relation.) << edge install_callbacks(relation.) end end |
.reindex_dependents_for(record) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/maglev/dependency_graph.rb', line 20 def reindex_dependents_for(record) dependent_owners = previous_dependent_owners(record) edges_for(record.class).each do |edge| dependent_owners.concat(owners_for(record, edge)) end dependent_owners.uniq { |owner| [owner.class.name, owner.id] }.each do |owner| next unless owner.respond_to?(:id) && owner.id ReindexJob.perform_later(owner.class.name, owner.id) end record.remove_instance_variable(:@maglev_previous_dependent_owners) if record.instance_variable_defined?(:@maglev_previous_dependent_owners) end |