Class: MassiveRecord::Adapters::Thrift::Row
- Inherits:
-
Object
- Object
- MassiveRecord::Adapters::Thrift::Row
- Defined in:
- lib/massive_record/adapters/thrift/row.rb
Instance Attribute Summary collapse
-
#column_families ⇒ Object
Returns the value of attribute column_families.
-
#columns ⇒ Object
Returns the value of attribute columns.
-
#id ⇒ Object
Returns the value of attribute id.
-
#new_record ⇒ Object
Returns the value of attribute new_record.
-
#table ⇒ Object
Returns the value of attribute table.
Class Method Summary collapse
Instance Method Summary collapse
- #atomic_increment(column_name, by = 1) ⇒ Object
- #column_names ⇒ Object
- #destroy ⇒ Object
- #fetch_all_column_families ⇒ Object
- #fetch_column_families(list) ⇒ Object
-
#initialize(opts = {}) ⇒ Row
constructor
A new instance of Row.
- #new_record? ⇒ Boolean
- #prev ⇒ Object
- #read_atomic_integer_value(column_name) ⇒ Object
-
#save ⇒ Object
Parse columns cells and save them.
- #update_column(column_family_name, column_name, value) ⇒ Object
- #update_columns(data = {}) ⇒ Object
- #updated_at ⇒ Object
-
#values ⇒ Object
Parse columns / cells and create a Hash from them.
- #values=(data) ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ Row
Returns a new instance of Row.
8 9 10 11 12 13 14 15 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 8 def initialize(opts = {}) @id = opts[:id] self.values = opts[:values] || {} @table = opts[:table] @column_families = opts[:column_families] || [] @columns = opts[:columns] || {} @new_record = true end |
Instance Attribute Details
#column_families ⇒ Object
Returns the value of attribute column_families.
6 7 8 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 6 def column_families @column_families end |
#columns ⇒ Object
Returns the value of attribute columns.
6 7 8 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 6 def columns @columns end |
#id ⇒ Object
Returns the value of attribute id.
6 7 8 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 6 def id @id end |
#new_record ⇒ Object
Returns the value of attribute new_record.
6 7 8 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 6 def new_record @new_record end |
#table ⇒ Object
Returns the value of attribute table.
6 7 8 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 6 def table @table end |
Class Method Details
.populate_from_trow_result(result, connection, table_name, column_families = []) ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 94 def self.populate_from_trow_result(result, connection, table_name, column_families = []) row = self.new row.id = result.row row.new_record = false row.table = Table.new(connection, table_name) row.column_families = column_families result.columns.each do |name, value| row.columns[name] = MassiveRecord::Wrapper::Cell.new({ :value => value.value, :created_at => Time.at(value. / 1000, (value. % 1000) * 1000) }) end row end |
Instance Method Details
#atomic_increment(column_name, by = 1) ⇒ Object
86 87 88 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 86 def atomic_increment(column_name, by = 1) @table.client.atomicIncrement(@table.name, id.to_s, column_name, by) end |
#column_names ⇒ Object
17 18 19 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 17 def column_names columns.keys end |
#destroy ⇒ Object
111 112 113 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 111 def destroy @table.client.deleteAllRow(@table.name, @id).nil? end |
#fetch_all_column_families ⇒ Object
21 22 23 24 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 21 def fetch_all_column_families @table.fetch_column_family fetch_column_families(@table.column_family_names) end |
#fetch_column_families(list) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 26 def fetch_column_families(list) @column_families = table.column_families.collect do |column_name, description| MassiveRecord::Wrapper::ColumnFamily.new(column_name.split(":").first, { :row => self, :name => description.name, :max_versions => description.maxVersions, :compression => description.compression, :in_memory => description.inMemory # bloomFilterType, bloomFilterVectorSize, bloomFilterNbHashes, blockCacheEnabled, timeToLive }) end end |
#new_record? ⇒ Boolean
115 116 117 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 115 def new_record? @new_record end |
#prev ⇒ Object
119 120 121 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 119 def prev self end |
#read_atomic_integer_value(column_name) ⇒ Object
90 91 92 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 90 def read_atomic_integer_value(column_name) atomic_increment(column_name, 0) end |
#save ⇒ Object
Parse columns cells and save them
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 68 def save mutations = [] @columns.each do |column_name, cell| mutations << Apache::Hadoop::Hbase::Thrift::Mutation.new(:column => column_name).tap do |mutation| if new_value = cell.value_to_thrift mutation.value = new_value else mutation.isDelete = true end end end @table.client.mutateRow(@table.name, id.to_s.dup.force_encoding(Encoding::BINARY), mutations).nil? end |
#update_column(column_family_name, column_name, value) ⇒ Object
57 58 59 60 61 62 63 64 65 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 57 def update_column(column_family_name, column_name, value) column = "#{column_family_name}:#{column_name}" if @columns[column].nil? @columns[column] = MassiveRecord::Wrapper::Cell.new({:value => value, :created_at => Time.now}) else @columns[column].value = value end end |
#update_columns(data = {}) ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 49 def update_columns(data = {}) data.each do |column_family_name, columns| columns.each do |column_name, values| update_column(column_family_name, column_name, values) end end end |
#updated_at ⇒ Object
123 124 125 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 123 def updated_at columns.values.collect(&:created_at).max end |
#values ⇒ Object
Parse columns / cells and create a Hash from them
40 41 42 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 40 def values @columns.inject({"id" => id}) {|h, (column_name, cell)| h[column_name] = cell.value; h} end |
#values=(data) ⇒ Object
44 45 46 47 |
# File 'lib/massive_record/adapters/thrift/row.rb', line 44 def values=(data) @values = {} update_columns(data) end |