Class: Cassandra::KsDef
- Inherits:
-
Object
- Object
- Cassandra::KsDef
- Defined in:
- lib/cassandra.rb
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.from_h(h) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/cassandra.rb', line 72 def self.from_h(h) ks_def = h.reduce(self.new) do |ks_def, (field_name, field_value)| case field_name.to_sym when :strategy_options field_value = Hash[field_value.map { |k, v| [k.to_s, v.to_s] }] when :column_families field_name = 'cf_defs' field_value = field_value.map { |cf_name, cf_def_h| CfDef.from_h(cf_def_h.merge(:name => cf_name, :keyspace => h[:name])) } end field = self::_Fields.find_by_name(field_name.to_s) raise ArgumentError, %(No field named "#{field_name}") unless field ks_def.set_field_value(field, field_value) ks_def end ks_def.cf_defs = java.util.Collections.emptyList unless ks_def.cf_defs ks_def end |
Instance Method Details
#to_h ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/cassandra.rb', line 90 def to_h self.class..reduce({}) do |acc, (field, )| field_name = field.field_name.to_sym field_value = get_field_value(field) case field_name.to_sym when :cf_defs cf_hs = field_value.map { |cf_def| cf_def.to_h } acc[:column_families] = Hash[cf_hs.map { |cf_h| [cf_h[:name], cf_h] }] when :strategy_options acc[field_name] = Hash[field_value.map { |pair| [pair.first.to_sym, pair.last] }] # JRuby 1.6.2 Java Map doesn't splat when yielding else acc[field_name] = field_value end acc end.tap do |h| if h[:strategy_class] == LOCATOR_STRATEGY_CLASSES[:simple] || h[:strategy_class] == LOCATOR_STRATEGY_CLASSES[:network_topology] h[:strategy_options].keys.each do |k| h[:strategy_options][k] = h[:strategy_options][k].to_i end end end end |