Class: Cassandra::CfDef

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

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.from_h(h) ⇒ Object



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/cassandra.rb', line 115

def self.from_h(h)
  h.reduce(self.new) do |cf_def, (field_name, field_value)|
    case field_name.to_sym
    when :column_type
      field_value = field_value.to_s.capitalize
    when :key_validation_class, :default_validation_class, :comparator_type, :subcomparator_type
      field_value = Cassandra::MARSHAL_TYPES.fetch(field_value, field_value)
    when :column_metadata
      field_value = field_value.map do |column_name, column_def_h|
        Cassandra::ColumnDef.from_h(column_def_h.merge(:name => column_name))
      end
    end
    field = self::_Fields.find_by_name(field_name.to_s)
    raise ArgumentError, %(No field named "#{field_name}") unless field
    cf_def.set_field_value(field, field_value)
    cf_def
  end
end

Instance Method Details

#to_hObject



134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# File 'lib/cassandra.rb', line 134

def to_h
  self.class.metaDataMap.reduce({:column_metadata => {}}) do |acc, (field, )|
    field_name = field.field_name.to_sym
    case field_name
    when :column_metadata
      column_hs = get_field_value(field).map { |col_def| col_def.to_h }
      acc[field_name] = Hash[column_hs.map { |col_h| [col_h[:name], col_h] }]
    when :column_type
      acc[field_name] = get_field_value(field).downcase.to_sym
    else
      acc[field_name] = get_field_value(field)
    end
    acc
  end
end