Sha256: 7328dc514176f8e17f67f31e3c206b242a473f3eedafd38d11b4518851f6f8cb

Contents?: true

Size: 860 Bytes

Versions: 3

Compression:

Stored size: 860 Bytes

Contents

module WhoAmI
  class TableColumnInfo
    def initialize(table_name:, column:)
      @column = column
      @primary_key = ActiveRecord::Base.get_primary_key(@table_name)
    end

    def name
      @column.name
    end

    def type
      @column.type.to_s
    end

    def attributes
      @attributes ||=
        begin
          attrs = [
            not_null? && "not null",
            primary_key? && "primary key",
            default,
          ]

          attrs.select { |attr| attr }
        end
    end

    def primary_key?
      case @primary_key
      when Array
        @primary_key.include?(name)
      when String
        @primary_key == name
      else
        false
      end
    end

    def not_null?
      !@column.null
    end

    def default
      if @column.default
        "default (#{@column.default})"
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
who_am_i-0.0.6 lib/who_am_i/table_column_info.rb
who_am_i-0.0.5 lib/who_am_i/table_column_info.rb
who_am_i-0.0.4 lib/who_am_i/table_column_info.rb