class SQL::Postgres::Table

Public Class Methods

new(adapter, table_name) click to toggle source
# File lib/dm-migrations/sql/postgres.rb, line 48
def initialize(adapter, table_name)
  @adapter, @name = adapter, table_name
  @columns = []
  adapter.query_table(table_name).each do |col_struct|
    @columns << SQL::Postgres::Column.new(col_struct)
  end

  query_column_constraints
end

Public Instance Methods

query_column_constraints() click to toggle source
# File lib/dm-migrations/sql/postgres.rb, line 58
def query_column_constraints
  @adapter.select(
    "SELECT * FROM information_schema.table_constraints WHERE table_name='#{@name}' AND table_schema=current_schema()"
  ).each do |table_constraint|
    @adapter.select(
      "SELECT * FROM information_schema.constraint_column_usage WHERE constraint_name='#{table_constraint.constraint_name}' AND table_schema=current_schema()"
    ).each do |constrained_column|
      @columns.each do |column|
        if column.name == constrained_column.column_name
          case table_constraint.constraint_type
          when "UNIQUE"       then column.unique = true
          when "PRIMARY KEY"  then column.primary_key = true
          end
        end
      end
    end
  end
end