Sha256: 184028e1df2e27f1e20fc8720c0d74d0835cf2a9a63f87c3e22dbc5a3892bfac

Contents?: true

Size: 1.62 KB

Versions: 38

Compression:

Stored size: 1.62 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 [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
    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)
    Arql::Commands::Table::table_info(Arql::Commands::Table::get_table_name(name))
  end
end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
arql-0.3.31 lib/arql/commands/table.rb
arql-0.3.30 lib/arql/commands/table.rb
arql-0.3.29 lib/arql/commands/table.rb
arql-0.3.28 lib/arql/commands/table.rb
arql-0.3.27 lib/arql/commands/table.rb
arql-0.3.26 lib/arql/commands/table.rb
arql-0.3.25 lib/arql/commands/table.rb
arql-0.3.24 lib/arql/commands/table.rb
arql-0.3.23 lib/arql/commands/table.rb
arql-0.3.22 lib/arql/commands/table.rb
arql-0.3.21 lib/arql/commands/table.rb
arql-0.3.20 lib/arql/commands/table.rb
arql-0.3.19 lib/arql/commands/table.rb
arql-0.3.18 lib/arql/commands/table.rb
arql-0.3.17 lib/arql/commands/table.rb
arql-0.3.16 lib/arql/commands/table.rb
arql-0.3.15 lib/arql/commands/table.rb
arql-0.3.14 lib/arql/commands/table.rb
arql-0.3.13 lib/arql/commands/table.rb
arql-0.3.12 lib/arql/commands/table.rb