Module: Txnap::SqlEventClassifier

Defined in:
lib/txnap/sql_event_classifier.rb

Class Method Summary collapse

Class Method Details

.classify(payload) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/txnap/sql_event_classifier.rb', line 7

def classify(payload)
  return :cache if payload[:cached] == true || payload[:name] == "CACHE"
  return :schema if payload[:name] == "SCHEMA"
  return :sql unless payload[:name] == "TRANSACTION"

  classify_transaction_sql(payload[:sql])
end

.classify_transaction_sql(sql) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'lib/txnap/sql_event_classifier.rb', line 15

def classify_transaction_sql(sql)
  statement = Array(sql).join(" ").strip

  return :begin if statement.match?(/\A(?:BEGIN\b|START\s+TRANSACTION\b)/i)
  return :commit if statement.match?(/\ACOMMIT\b/i)
  return :transaction if statement.match?(/\AROLLBACK\s+TO\b/i)
  return :rollback if statement.match?(/\AROLLBACK\b/i)

  :transaction
end