Class: Dbwatcher::SqlLogger

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/dbwatcher/sql_logger.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSqlLogger

Returns a new instance of SqlLogger.



9
10
11
12
13
# File 'lib/dbwatcher/sql_logger.rb', line 9

def initialize
  @queries = []
  @mutex = Mutex.new
  setup_subscriber if Dbwatcher.configuration.track_queries
end

Instance Attribute Details

#queriesObject (readonly)

Returns the value of attribute queries.



7
8
9
# File 'lib/dbwatcher/sql_logger.rb', line 7

def queries
  @queries
end

Instance Method Details

#clear_queriesObject



44
45
46
47
48
# File 'lib/dbwatcher/sql_logger.rb', line 44

def clear_queries
  @mutex.synchronize do
    @queries.clear
  end
end

#create_query_record(sql, name, binds, duration) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/dbwatcher/sql_logger.rb', line 24

def create_query_record(sql, name, binds, duration)
  {
    id: SecureRandom.uuid,
    sql: sql,
    name: name,
    binds: binds,
    duration: duration,
    timestamp: Time.current,
    session_id: current_session_id,
    backtrace: filtered_backtrace,
    tables: extract_tables(sql),
    operation: extract_operation(sql)
  }
end

#log_query(sql, name, binds, _type_casted_binds, duration) ⇒ Object



15
16
17
18
19
20
21
22
# File 'lib/dbwatcher/sql_logger.rb', line 15

def log_query(sql, name, binds, _type_casted_binds, duration)
  return unless Dbwatcher.configuration.track_queries

  @mutex.synchronize do
    query = create_query_record(sql, name, binds, duration)
    store_query(query)
  end
end

#store_query(query) ⇒ Object



39
40
41
42
# File 'lib/dbwatcher/sql_logger.rb', line 39

def store_query(query)
  @queries << query
  Storage.queries.create(query)
end