HornsAndHooves/pg_saurus

View on GitHub
lib/core_ext/active_record/schema_dumper.rb

Summary

Maintainability
A
1 hr
Test Coverage
module ActiveRecord #:nodoc:
  # Patched version:  3.1.3
  # Patched methods::
  #   * indexes
  class SchemaDumper #:nodoc:
    # Writes out index-related details to the schema stream
    #
    # == Patch:
    # Add support of skip_column_quoting option for json indexes.
    #
    def index_parts(index)
      is_json_index = index.columns.is_a?(String) && index.columns =~ /^(.+->.+)$/

      index_parts = [
        index.columns.inspect,
        "name: #{index.name.inspect}",
      ]
      index_parts << "unique: true" if index.unique
      index_parts << "length: #{format_index_parts(index.lengths)}" if index.lengths.present?
      index_parts << "order: #{format_index_parts(index.orders)}" if index.orders.present?
      index_parts << "opclass: #{format_index_parts(index.opclasses)}" if index.opclasses.present?
      index_parts << "where: #{index.where.inspect}" if index.where
      index_parts << "using: #{index.using.inspect}" if !@connection.default_index_type?(index)
      index_parts << "skip_column_quoting: true" if is_json_index
      index_parts << "type: #{index.type.inspect}" if index.type
      index_parts << "comment: #{index.comment.inspect}" if index.comment
      index_parts
    end
  end
end