Class: Cassandra::CfDef
- Inherits:
-
Object
- Object
- Cassandra::CfDef
- 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_h ⇒ Object
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..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 |