Class: Notifications::ConsolidateNotifications

Inherits:
ConsolidationPlan show all
Defined in:
app/services/notifications/consolidate_notifications.rb

Instance Method Summary collapse

Methods inherited from ConsolidationPlan

#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

Returns:

  • (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