Class: Bemi::ContextHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/bemi/context_handler.rb

Constant Summary collapse

READ_QUERY =

ActiveRecord::ConnectionAdapters::MySQL::DatabaseStatements.const_get(:READ_QUERY)

%r{\A(?:[(\s]|(?m-ix:(?:--.*\n)|/\*(?:[^*]|\*[^/])*\*/))*(?-mix:(?i-mx:desc)|(?i-mx:describe)|(?i-mx:set)|(?i-mx:show)|(?i-mx:use)|(?i-mx:begin)|(?i-mx:commit)|(?i-mx:explain)|(?i-mx:release)|(?i-mx:rollback)|(?i-mx:savepoint)|(?i-mx:select)|(?i-mx:with))}
IGNORE_TABLES =
%r{#{Bemi::Ingester::IGNORE_TABLES.map { |t| "`#{t}`" }.join('|')}}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context: nil) ⇒ ContextHandler

Returns a new instance of ContextHandler.



35
36
37
# File 'lib/bemi/context_handler.rb', line 35

def initialize(context: nil)
  @context = context
end

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



33
34
35
# File 'lib/bemi/context_handler.rb', line 33

def context
  @context
end

Class Method Details

.getObject



12
13
14
# File 'lib/bemi/context_handler.rb', line 12

def get
  Thread.current[:context_handler] ||= Bemi::ContextHandler.new
end

.set(data) ⇒ Object



7
8
9
10
# File 'lib/bemi/context_handler.rb', line 7

def set(data)
  context = Bemi::Context.new(data: data)
  Thread.current[:context_handler] = Bemi::ContextHandler.new(context: context)
end

.transform_sql(sql) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/bemi/context_handler.rb', line 16

def transform_sql(sql)
  return sql if !write_query?(sql)

  context_handler = get
  context_handler.context.save! if context_handler.context && context_handler.context.id.nil?

  context_id = context_handler.context&.id
  context_id ? "/* #{context_id} */ #{sql}" : sql
end