class TableCopy::PG::Field

Attributes

data_limit[R]
name[R]
type_name[R]

Public Class Methods

new(attrs) click to toggle source
# File lib/table_copy/pg/field.rb, line 6
def initialize(attrs)
  @name = attrs['column_name']
  data_type = attrs['data_type']

  if data_type =~ /character/
    @data_limit = attrs['character_maximum_length']
  end

  if data_type == 'ARRAY' && attrs['udt_name'] == '_varchar'
    @type_name = 'character varying'
    @data_limit = '256'
    @array_ddl = '[]'
  end

  @type_name ||= data_type
end

Public Instance Methods

auto_index?() click to toggle source
# File lib/table_copy/pg/field.rb, line 27
def auto_index?
  @type_name =~ /int|timestamp|bool/
end
ddl() click to toggle source
# File lib/table_copy/pg/field.rb, line 23
def ddl
  @ddl ||= "#{name} #{type_name}#{data_limit_ddl}#{array_ddl}"
end

Private Instance Methods

array_ddl() click to toggle source
# File lib/table_copy/pg/field.rb, line 37
def array_ddl
  @array_ddl
end
data_limit_ddl() click to toggle source
# File lib/table_copy/pg/field.rb, line 33
def data_limit_ddl
  "(#{data_limit})" if @data_limit
end