module Arql::Commands::Table

Public Class Methods

get_table_name(name) click to toggle source
# File lib/arql/commands/table.rb, line 6
def get_table_name(name)
  name = name.to_s
  return name if name =~ /^[a-z]/
  if Object.const_defined?(name)
    klass = Object.const_get(name)
    return klass.table_name if klass < ActiveRecord::Base
  end
  name
end
table_info(table_name) click to toggle source
# File lib/arql/commands/table.rb, line 22
def table_info(table_name)
  t = []
  t << ['PK', 'Name', 'SQL Type', 'Ruby Type', 'Limit', 'Precision', 'Scale', 'Default', 'Nullable', 'Comment']
  t << nil
  connection = ::ActiveRecord::Base.connection
  connection.columns(table_name).each do |column|
    pk = if [connection.primary_key(table_name)].flatten.include?(column.name)
           'Y'
         else
           ''
         end
    t << [pk, column.name, column.sql_type,
          column.sql_type_metadata.type, column.sql_type_metadata.limit || '',
          column.sql_type_metadata.precision || '', column.sql_type_metadata.scale || '', column.default || '',
          column.null, column.comment || '']
  end
  t
end
table_info_table(table_name) click to toggle source
# File lib/arql/commands/table.rb, line 16
def table_info_table(table_name)
  Terminal::Table.new do |t|
    table_info(table_name).each { |row| t << (row || :separator) }
  end
end