Class: JSONAPI::Support::QueryTrackingSubscriber

Inherits:
Object
  • Object
show all
Defined in:
lib/json_api/support/query_tracking_subscriber.rb

Constant Summary collapse

SKIP_PATTERNS =
[
  /\A\s*(BEGIN|COMMIT|ROLLBACK|SAVEPOINT|RELEASE\s+SAVEPOINT)\b/i,
  /\A\s*(CREATE|ALTER|DROP)\s+(TABLE|INDEX|DATABASE)/i,
  /\APRAGMA\b/i,
  /sqlite_master|sqlite_temp_master/i,
  /\bFROM\s+pg_/i,
  /\A\s*(SET|SHOW)\s/i,
].freeze

Instance Method Summary collapse

Instance Method Details

#call(name, start, finish, id, payload) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/json_api/support/query_tracking_subscriber.rb', line 15

def call(name, start, finish, id, payload)
  tracking = Thread.current[:jpie_query_tracking]
  return if tracking.nil?

  sql = payload[:sql]
  return unless count_query?(sql)

  tracking[:count] += 1
  tracking[:queries] << sql

  maybe_emit_slow_query(tracking, sql, name, start, finish, id, payload)
end