Class: Utf8mb4rails::Migrator::DBInspector

Inherits:
Object
  • Object
show all
Defined in:
lib/utf8mb4rails/migrator/db_inspector.rb

Overview

DB introspection (only for columns)

Instance Method Summary collapse

Constructor Details

#initializeDBInspector

Initializes AR :reek:UtilityFunction



7
8
9
10
11
# File 'lib/utf8mb4rails/migrator/db_inspector.rb', line 7

def initialize
  ActiveRecord::Base.establish_connection(
    ActiveRecord::Base.connection_config.merge(adapter: 'percona')
  )
end

Instance Method Details

#column_info(table, column) ⇒ Object

Returns a hash with information about the column

:reek:FeatureEnvy

Parameters:

  • table (String)
  • column (String)


27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/utf8mb4rails/migrator/db_inspector.rb', line 27

def column_info(table, column)
  sql = "SELECT DATA_TYPE, COLUMN_DEFAULT, CHARACTER_SET_NAME, CHARACTER_MAXIMUM_LENGTH
  FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = '#{table}'
  AND COLUMN_NAME = '#{column}'
  AND TABLE_SCHEMA='#{database_name}'"
  result = ActiveRecord::Base.connection.execute(sql).first
  ColumnInfo.new(
    type: result[0].upcase,
    default: result[1],
    charset: result[2],
    max_length: result[3]
  )
end

#columns(table) ⇒ Object

:reek:UtilityFunction



16
17
18
# File 'lib/utf8mb4rails/migrator/db_inspector.rb', line 16

def columns(table)
  ActiveRecord::Base.connection.columns(table).map(&:name)
end