Class: Notifications::ConsolidateNotifications
Instance Method Summary
collapse
#set_mutations, #set_precondition
Constructor Details
#initialize(from:, to:, consolidation_window: nil, unconsolidated_query_blk: nil, consolidated_query_blk: nil, threshold:) ⇒ ConsolidateNotifications
Returns a new instance of ConsolidateNotifications.
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'app/services/notifications/consolidate_notifications.rb', line 37
def initialize(
from:,
to:,
consolidation_window: nil,
unconsolidated_query_blk: nil,
consolidated_query_blk: nil,
threshold:
)
@from = from
@to = to
@threshold = threshold
@consolidation_window = consolidation_window
@consolidated_query_blk = consolidated_query_blk
@unconsolidated_query_blk = unconsolidated_query_blk
@precondition_blk = nil
@set_data_blk = nil
@bump_notification = bump_notification
end
|
Instance Method Details
#before_consolidation_callbacks(before_update_blk: nil, before_consolidation_blk: nil) ⇒ Object
56
57
58
59
60
|
# File 'app/services/notifications/consolidate_notifications.rb', line 56
def before_consolidation_callbacks(before_update_blk: nil, before_consolidation_blk: nil)
@before_update_blk = before_update_blk
@before_consolidation_blk = before_consolidation_blk
self
end
|
#can_consolidate_data?(notification) ⇒ Boolean
62
63
64
65
66
67
68
69
70
|
# File 'app/services/notifications/consolidate_notifications.rb', line 62
def can_consolidate_data?(notification)
return false if get_threshold.zero? || to.blank?
return false if notification.notification_type != from
@data = consolidated_data(notification)
return true if @precondition_blk.nil?
@precondition_blk.call(data, notification)
end
|
#consolidate_or_save!(notification) ⇒ Object
72
73
74
75
76
77
78
|
# File 'app/services/notifications/consolidate_notifications.rb', line 72
def consolidate_or_save!(notification)
@data ||= consolidated_data(notification)
return unless can_consolidate_data?(notification)
update_consolidated_notification!(notification) ||
create_consolidated_notification!(notification) || notification.tap(&:save!)
end
|