Class: Webhookdb::Jobs::ModelEventSystemLogTracker

Inherits:
Object
  • Object
show all
Extended by:
Async::Job
Defined in:
lib/webhookdb/jobs/model_event_system_log_tracker.rb

Instance Method Summary collapse

Methods included from Async::Job

extended

Instance Method Details

#_perform(event) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/webhookdb/jobs/model_event_system_log_tracker.rb', line 11

def _perform(event)
  case event.name
      when "webhookdb.customer.created"
        self.alert_customer_created(event)
      when "webhookdb.organization.created"
        self.alert_org_created(event)
      when "webhookdb.serviceintegration.created"
        self.alert_sint_created(event)
      when "webhookdb.serviceintegration.destroyed"
        self.alert_sint_destroyed(event)
    end
end

#alert_customer_created(event) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/webhookdb/jobs/model_event_system_log_tracker.rb', line 33

def alert_customer_created(event)
  customer = self.lookup_model(Webhookdb::Customer, event)
  Webhookdb::DeveloperAlert.new(
    subsystem: "Customer Created",
    emoji: ":hook:",
    fallback: "New customer created: #{customer.inspect}",
    fields: [
      {title: "Id", value: customer.id, short: true},
      {title: "Email", value: customer.email, short: true},
      {title: "Link", value: customer.admin_link},
    ],
  ).emit
  create_event("Customer Created", customer.email, customer.admin_link)
end

#alert_org_created(event) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/webhookdb/jobs/model_event_system_log_tracker.rb', line 48

def alert_org_created(event)
  org = self.lookup_model(Webhookdb::Organization, event)
  Webhookdb::DeveloperAlert.new(
    subsystem: "Organization Created",
    emoji: ":office:",
    fallback: "Organization created: #{org.inspect}",
    fields: [
      {title: "Id", value: org.id, short: true},
      {title: "Email", value: org.name, short: true},
      {title: "Link", value: org.admin_link},
    ],
  ).emit
  create_event("Organization Created", "#{org.name} (#{org.key})", org.admin_link)
end

#alert_sint_created(event) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/webhookdb/jobs/model_event_system_log_tracker.rb', line 63

def alert_sint_created(event)
  sint = self.lookup_model(Webhookdb::ServiceIntegration, event)
  Webhookdb::DeveloperAlert.new(
    subsystem: "Integration Created",
    emoji: ":fax:",
    fallback: "Service Integration #{sint.service_name} (#{sint.opaque_id}) created",
    fields: [
      {title: "Id", value: sint.opaque_id, short: true},
      {title: "Service", value: sint.service_name, short: true},
      {title: "Table", value: sint.table_name, short: true},
      {title: "Org Name", value: sint.organization.name, short: true},
      {title: "Link", value: sint.admin_link},
    ],
  ).emit
  create_event(
    "Integration Created",
    "#{sint.service_name} (#{sint.opaque_id}) created in #{sint.organization.name}",
    sint.admin_link,
  )
end

#alert_sint_destroyed(event) ⇒ Object



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/webhookdb/jobs/model_event_system_log_tracker.rb', line 84

def alert_sint_destroyed(event)
  pl = event.payload[1].symbolize_keys
  org = Webhookdb::Organization[pl[:organization_id]]
  Webhookdb::DeveloperAlert.new(
    subsystem: "Integration Deleted",
    emoji: ":funeral_urn:",
    fallback: "Service Integration #{pl[:service_name]} (#{pl[:opaque_id]}) deleted",
    fields: [
      {title: "Id", value: pl[:opaque_id], short: true},
      {title: "Service", value: pl[:service_name], short: true},
      {title: "Table", value: pl[:table_name], short: true},
      {title: "Org Name", value: org.name, short: true},
      {title: "Link", value: org.admin_link},
    ],
  ).emit
  create_event(
    "Integration Deleted",
    "#{pl[:service_name]} (#{pl[:opaque_id]}) deleted from #{org.name}",
    org.admin_link,
  )
end

#create_event(title, body, link) ⇒ Object



24
25
26
27
28
29
30
31
# File 'lib/webhookdb/jobs/model_event_system_log_tracker.rb', line 24

def create_event(title, body, link)
  Webhookdb::SystemLogEvent.create(
    at: Time.now,
    title:,
    body:,
    link:,
  )
end