Class: PaperTrailDiff::ActivityEventSnapshotRefresher
- Inherits:
-
Object
- Object
- PaperTrailDiff::ActivityEventSnapshotRefresher
- Defined in:
- lib/paper_trail_diff/activity_event_snapshot_refresher.rb,
sig/generated/paper_trail_diff/activity_event_snapshot_refresher.rbs
Overview
Dispatches safe descendant events to focused immutable snapshot appliers.
Instance Method Summary collapse
-
#belongs_to_applier(record_normalizer) ⇒ ActivityBelongsToEventApplier
: (ActivityEventRecordNormalizer) -> ActivityBelongsToEventApplier.
-
#call(root_endpoint, context_endpoint, previous, branches, event) ⇒ [ bool, RecordSnapshot? ]
: (untyped, untyped, RecordSnapshot, Array, ActivityEvent?) -> [bool, RecordSnapshot?].
-
#collection_applier(record_normalizer, route_updater) ⇒ ActivityCollectionEventApplier
: (ActivityEventRecordNormalizer, ActivityCollectionRouteUpdater) -> ActivityCollectionEventApplier.
-
#collection_updater(pool) ⇒ ActivityCollectionRouteUpdater
: (SnapshotPool) -> ActivityCollectionRouteUpdater.
-
#configure_appliers(pool, association_reader) ⇒ void
: (SnapshotPool, untyped) -> void.
-
#deserialized_changeset(version, model_class) ⇒ Object
: (untyped, untyped) -> untyped.
-
#endpoint_model_class(endpoint) ⇒ Object
: (untyped) -> untyped.
-
#initialize(traversal:, pool:, components:, association_reader: nil, record_transition: nil) ⇒ ActivityEventSnapshotRefresher
constructor
: (traversal: AssociationTraversal, pool: SnapshotPool, components: untyped, ?association_reader: untyped, ?record_transition: untyped) -> void.
-
#record_after(version) ⇒ Object
: (untyped) -> untyped.
Constructor Details
#initialize(traversal:, pool:, components:, association_reader: nil, record_transition: nil) ⇒ ActivityEventSnapshotRefresher
: (traversal: AssociationTraversal, pool: SnapshotPool, components: untyped, ?association_reader: untyped, ?record_transition: untyped) -> void
8 9 10 11 12 13 14 |
# File 'lib/paper_trail_diff/activity_event_snapshot_refresher.rb', line 8 def initialize(traversal:, pool:, components:, association_reader: nil, record_transition: nil) @components = components @record_resolver = ActivityEventRecordResolver.new(record_transition: record_transition) @route_finder = ActivityEventRouteFinder.new(traversal) @relationship = ActivityRelationship.new configure_appliers(pool, association_reader) end |
Instance Method Details
#belongs_to_applier(record_normalizer) ⇒ ActivityBelongsToEventApplier
: (ActivityEventRecordNormalizer) -> ActivityBelongsToEventApplier
42 43 44 45 46 47 48 |
# File 'lib/paper_trail_diff/activity_event_snapshot_refresher.rb', line 42 def belongs_to_applier(record_normalizer) ActivityBelongsToEventApplier.new( route_finder: @route_finder, record_resolver: @record_resolver, record_normalizer: record_normalizer ) end |
#call(root_endpoint, context_endpoint, previous, branches, event) ⇒ [ bool, RecordSnapshot? ]
: (untyped, untyped, RecordSnapshot, Array, ActivityEvent?) -> [bool, RecordSnapshot?]
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/paper_trail_diff/activity_event_snapshot_refresher.rb', line 51 def call( # rubocop:disable Metrics/MethodLength root_endpoint, context_endpoint, previous, branches, event ) return [false, nil] unless event && branches.one? tree, normalizer = @components.call(branches) routes = @route_finder.collection_routes( endpoint_model_class(root_endpoint), tree, event.version.item_type.to_s ) unless routes.empty? delta = @record_resolver.snapshot_delta(event.version) return [false, nil] unless @collection_applier.safe?(routes, event.version, delta) return @collection_applier.call( root_endpoint, context_endpoint, previous, normalizer, routes, event.version, delta ) end @belongs_to_applier.call( root_endpoint, context_endpoint, previous, tree, normalizer, event.version ) end |
#collection_applier(record_normalizer, route_updater) ⇒ ActivityCollectionEventApplier
: (ActivityEventRecordNormalizer, ActivityCollectionRouteUpdater) -> ActivityCollectionEventApplier
32 33 34 35 36 37 38 39 |
# File 'lib/paper_trail_diff/activity_event_snapshot_refresher.rb', line 32 def collection_applier(record_normalizer, route_updater) ActivityCollectionEventApplier.new( record_resolver: @record_resolver, record_normalizer: record_normalizer, route_updater: route_updater, relationship: @relationship ) end |
#collection_updater(pool) ⇒ ActivityCollectionRouteUpdater
: (SnapshotPool) -> ActivityCollectionRouteUpdater
27 28 29 |
# File 'lib/paper_trail_diff/activity_event_snapshot_refresher.rb', line 27 def collection_updater(pool) ActivityCollectionRouteUpdater.new(pool: pool, relationship: @relationship) end |
#configure_appliers(pool, association_reader) ⇒ void
This method returns an undefined value.
: (SnapshotPool, untyped) -> void
17 18 19 20 21 22 23 24 |
# File 'lib/paper_trail_diff/activity_event_snapshot_refresher.rb', line 17 def configure_appliers(pool, association_reader) route_updater = collection_updater(pool) record_normalizer = ActivityEventRecordNormalizer.new( association_reader: association_reader ) @collection_applier = collection_applier(record_normalizer, route_updater) @belongs_to_applier = belongs_to_applier(record_normalizer) end |
#deserialized_changeset(version, model_class) ⇒ Object
: (untyped, untyped) -> untyped
106 107 108 |
# File 'lib/paper_trail_diff/activity_event_snapshot_refresher.rb', line 106 def deserialized_changeset(version, model_class) @record_resolver.deserialized_changeset(version, model_class) end |
#endpoint_model_class(endpoint) ⇒ Object
: (untyped) -> untyped
111 112 113 |
# File 'lib/paper_trail_diff/activity_event_snapshot_refresher.rb', line 111 def endpoint_model_class(endpoint) Endpoint.version?(endpoint) ? Endpoint.model_class(endpoint) : endpoint.class end |
#record_after(version) ⇒ Object
: (untyped) -> untyped
101 102 103 |
# File 'lib/paper_trail_diff/activity_event_snapshot_refresher.rb', line 101 def record_after(version) @record_resolver.record_after(version) end |