Sha256: e28892d0639ea198ef110c2e6773c4c7ca31119a759a811525852ca21973ba08
Contents?: true
Size: 1.57 KB
Versions: 3
Compression:
Stored size: 1.57 KB
Contents
require 'terminal-table' module Arql::Commands module Table class << self 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 def table_info_table(table_name) Terminal::Table.new do |t| table_info(table_name).each { |row| t << (row || :separator) } end end 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 column.name == connection.primary_key(table_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 end Pry.commands.block_command 't' do |name| table_name = Table::get_table_name(name) puts puts "Table: #{table_name}" puts Table::table_info_table(table_name) end end end module Kernel def table(name) Table::table_info(Table::get_table_name(name)) end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
arql-0.1.13 | lib/arql/commands/table.rb |
arql-0.1.12 | lib/arql/commands/table.rb |
arql-0.1.11 | lib/arql/commands/table.rb |