module Torque::PostgreSQL::Adapter::SchemaDumper

Public Instance Methods

prepare_column_options(column) click to toggle source

Adds :subtype option to the default set

Calls superclass method
# File lib/torque/postgresql/adapter/schema_dumper.rb, line 26
def prepare_column_options(column)
  spec = super

  if subtype = schema_subtype(column)
    spec[:subtype] = subtype
  end

  spec
end
schema_type(column) click to toggle source

Translate :enum_set into :enum

Calls superclass method
# File lib/torque/postgresql/adapter/schema_dumper.rb, line 21
def schema_type(column)
  column.type == :enum_set ? :enum : super
end

Private Instance Methods

enum(name, stream) click to toggle source

Dump enum custom type

# File lib/torque/postgresql/adapter/schema_dumper.rb, line 102
def enum(name, stream)
  values = @connection.enum_values(name).map { |v| "\"#{v}\"" }
  stream.puts "  create_enum \"#{name}\", [#{values.join(', ')}], force: :cascade"
end
schema_subtype(column) click to toggle source
# File lib/torque/postgresql/adapter/schema_dumper.rb, line 38
def schema_subtype(column)
  column.sql_type.to_sym.inspect if column.type == :enum || column.type == :enum_set
end
user_defined_types(stream) click to toggle source

Dump user defined types like enum

# File lib/torque/postgresql/adapter/schema_dumper.rb, line 88
def user_defined_types(stream)
  types = @connection.user_defined_types('e')
  return unless types.any?

  stream.puts "  # These are user-defined types used on this database"
  types.sort_by(&:first).each { |(name, type)| send(type.to_sym, name, stream) }
  stream.puts
rescue => e
  stream.puts "# Could not dump user-defined types because of following #{e.class}"
  stream.puts "#   #{e.message}"
  stream.puts
end