Class: Gitlab::Database::Migrations::Observers::QueryDetails

Inherits:
MigrationObserver show all
Defined in:
lib/gitlab/database/migrations/observers/query_details.rb

Instance Attribute Summary

Attributes inherited from MigrationObserver

#connection, #observation, #output_dir

Instance Method Summary collapse

Methods inherited from MigrationObserver

#initialize

Constructor Details

This class inherits a constructor from Gitlab::Database::Migrations::Observers::MigrationObserver

Instance Method Details

#afterObject



18
19
20
21
22
23
# File 'lib/gitlab/database/migrations/observers/query_details.rb', line 18

def after
  ActiveSupport::Notifications.unsubscribe(@subscriber)
  @writer.pop_all
  @writer.flush
  @file.close
end

#beforeObject



8
9
10
11
12
13
14
15
16
# File 'lib/gitlab/database/migrations/observers/query_details.rb', line 8

def before
  file_path = File.join(output_dir, "query-details.json")
  @file = File.open(file_path, 'wb')
  @writer = Oj::StreamWriter.new(@file, {})
  @writer.push_array
  @subscriber = ActiveSupport::Notifications.subscribe('sql.active_record') do |*args|
    record_sql_event(*args)
  end
end

#recordObject



25
26
27
# File 'lib/gitlab/database/migrations/observers/query_details.rb', line 25

def record
  # no-op
end

#record_sql_event(_name, started, finished, _unique_id, payload) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/gitlab/database/migrations/observers/query_details.rb', line 29

def record_sql_event(_name, started, finished, _unique_id, payload)
  @writer.push_value({
                       start_time: started.iso8601(6),
                       end_time: finished.iso8601(6),
                       sql: payload[:sql],
                       binds: payload[:type_casted_binds]
                     })
end