Module: Motor::Alerts
- Defined in:
- lib/motor/alerts.rb,
lib/motor/alerts/scheduler.rb,
lib/motor/alerts/persistance.rb,
lib/motor/alerts/slack_sender.rb,
lib/motor/alerts/scheduled_alerts_cache.rb
Defined Under Namespace
Modules: Persistance, ScheduledAlertsCache, Scheduler, SlackSender
Class Method Summary
collapse
Class Method Details
.send_alert(alert) ⇒ Object
7
8
9
10
11
12
13
|
# File 'lib/motor/alerts.rb', line 7
def send_alert(alert)
if alert.preferences[:adapter] == 'slack'
send_slack_alert(alert)
else
send_email_alert(alert)
end
end
|
.send_email_alert(alert) ⇒ Object
15
16
17
18
19
20
21
22
23
|
# File 'lib/motor/alerts.rb', line 15
def send_email_alert(alert)
alert.to_emails.split(',').each do |email|
if email.include?('@')
Motor::AlertsMailer.alert_email(alert, email: email).deliver_now!
else
send_query_email_alerts(alert, email.gsub(/[{}]/, ''))
end
end
end
|
.send_query_email_alerts(alert, column_name) ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/motor/alerts.rb', line 25
def send_query_email_alerts(alert, column_name)
result = Queries::RunQuery.call(alert.query)
column_index = result.columns.find_index { |c| c[:name] == column_name }
emails = result.data.pluck(column_index).uniq
emails.each do |email|
Motor::AlertsMailer.alert_email(alert, email: email).deliver_now!
end
end
|
.send_slack_alert(alert) ⇒ Object
37
38
39
40
41
42
43
44
45
|
# File 'lib/motor/alerts.rb', line 37
def send_slack_alert(alert)
slack_users = Slack::Client.load_users(limit: Slack::ITEMS_LIMIT)['members']
alert.preferences[:slack_conversation_ids].each do |conversation_id|
user = slack_users.find { |u| u['id'] == conversation_id }
Motor::Alerts::SlackSender.call(alert, conversation_id, slack_user: user)
end
end
|