Class: Scheman::Schema::Field

Inherits:
Object
  • Object
show all
Defined in:
lib/scheman/schema.rb

Instance Method Summary collapse

Constructor Details

#initialize(field) ⇒ Field

Returns a new instance of Field.



77
78
79
# File 'lib/scheman/schema.rb', line 77

def initialize(field)
  @field = field
end

Instance Method Details

#==(field) ⇒ true, false

Note:

Overridden

Returns:

  • (true, false)


83
84
85
# File 'lib/scheman/schema.rb', line 83

def ==(field)
  type == field.type && size == field.size && qualifiers == field.qualifiers
end

#indexHash

Returns Index defined as a field qualifier.

Returns:

  • (Hash)

    Index defined as a field qualifier



118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/scheman/schema.rb', line 118

def index
  @field[:qualifiers].find do |qualifier|
    case qualifier[:qualifier][:type]
    when "primary_key"
      break {
        column: name,
        name: nil,
        primary: true,
        type: nil,
      }
    when "unique_key"
      break {
        column: name,
        name: nil,
        primary: nil,
        type: nil,
        unique: true,
      }
    end
  end
end

#nameString

Returns:

  • (String)


93
94
95
# File 'lib/scheman/schema.rb', line 93

def name
  @field[:name]
end

#qualifiersArray<Hash>

Returns Sorted qualifiers, without index-related types.

Returns:

  • (Array<Hash>)

    Sorted qualifiers, without index-related types



111
112
113
114
115
# File 'lib/scheman/schema.rb', line 111

def qualifiers
  @qualifiers ||= @field[:qualifiers].reject do |qualifier|
    %w[primary_key unique_key].include?(qualifier[:qualifier][:type])
  end
end

#sizeString?

Note:

Size can be 2 values but not supported yet

Returns:

  • (String, nil)


106
107
108
# File 'lib/scheman/schema.rb', line 106

def size
  @field[:size]
end

#to_hashHash

Returns:

  • (Hash)


88
89
90
# File 'lib/scheman/schema.rb', line 88

def to_hash
  @field.merge(qualifiers: qualifiers)
end

#typeString

Returns Lower-cased type name.

Examples:

"varchar"

Returns:

  • (String)

    Lower-cased type name



100
101
102
# File 'lib/scheman/schema.rb', line 100

def type
  @field[:type]
end