class Utf8mb4rails::Migrator::DBInspector
DB introspection (only for columns)
Public Class Methods
new()
click to toggle source
Initializes AR :reek: UtilityFunction
# File lib/utf8mb4rails/migrator/db_inspector.rb, line 7 def initialize ActiveRecord::Base.establish_connection( ActiveRecord::Base.connection_config.merge(adapter: 'percona') ) end
Public Instance Methods
column_info(table, column)
click to toggle source
Returns a hash with information about the column
@param [String] table @param [String] column
@returns [Hash] { type: String, default: String or nil, charset: String or nil } :reek: FeatureEnvy
# 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)
click to toggle source
@returns [Array<String>] An array with column names :reek: UtilityFunction
# File lib/utf8mb4rails/migrator/db_inspector.rb, line 16 def columns(table) ActiveRecord::Base.connection.columns(table).map(&:name) end
Private Instance Methods
database_name()
click to toggle source
:reek: UtilityFunction
# File lib/utf8mb4rails/migrator/db_inspector.rb, line 44 def database_name ActiveRecord::Base.connection.current_database end