module ActiveRecord::Postgres::Constraints::SchemaDumper

Public Instance Methods

indexes_in_create(table, stream) click to toggle source
# File lib/active_record/postgres/constraints/schema_dumper.rb, line 7
def indexes_in_create(table, stream)
  constraints = @connection.constraints(table)
  indexes = @connection.indexes(table).reject do |index|
    constraints.pluck('conname').include?(index_name(index))
  end
  dump_indexes(indexes, stream)
  dump_constraints(constraints, stream)
end

Private Instance Methods

dump_constraints(constraints, stream) click to toggle source
# File lib/active_record/postgres/constraints/schema_dumper.rb, line 27
def dump_constraints(constraints, stream)
  return unless constraints.any?

  constraint_statements = constraints.map do |constraint|
    type = CONSTRAINT_TYPES.key(constraint['contype'])
    ActiveRecord::Postgres::Constraints.
      class_for_constraint_type(type).
      to_schema_dump(constraint)
  end
  stream.puts constraint_statements.sort.join("\n")
end
dump_indexes(indexes, stream) click to toggle source
# File lib/active_record/postgres/constraints/schema_dumper.rb, line 18
def dump_indexes(indexes, stream)
  return unless indexes.any?

  index_statements = indexes.map do |index|
    "    t.index #{index_parts(index).join(', ')}"
  end
  stream.puts index_statements.sort.join("\n")
end
index_name(index) click to toggle source
# File lib/active_record/postgres/constraints/schema_dumper.rb, line 39
def index_name(index)
  if index.is_a?(ActiveRecord::ConnectionAdapters::IndexDefinition)
    index.name
  else
    index['name']
  end
end