cassilds-model 0.0.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = CassandraModel::VERSION
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.authors = ["Tien Le", "Umanni"]
10
- s.email = ["tienlx@gmail.com", "ygor@umanni.com"]
10
+ s.email = ["tienlx@gmail.com", "contato@umanni.com"]
11
11
  s.homepage = ""
12
12
  s.summary = %q{Simple model support for Cassandra ColumnFamily/SuperColumnFamily mapping}
13
13
  s.description = %q{Cassandra-model allows you to map ColumnFamily/SuperColumnFamily in Cassandra to Ruby objects. It was designed to be fast and simple.}
@@ -1,4 +1,4 @@
1
- require 'cassandra/0.7'
1
+ require 'cassandra'
2
2
  require 'forwardable'
3
3
  require 'date'
4
4
 
@@ -27,4 +27,4 @@ require 'cassandra-model/callbacks'
27
27
  require 'cassandra-model/persistence'
28
28
  require 'cassandra-model/batches'
29
29
  require 'cassandra-model/base'
30
- #require 'cassandra-model/railtie'
30
+ #require 'cassandra-model/railtie'
@@ -35,11 +35,16 @@ module CassandraModel
35
35
  if @key_type.downcase == 'timeuuid' or @key_type.downcase == 'time_uuid'
36
36
  value = SimpleUUID::UUID.new(value)
37
37
  end
38
- @key = value.to_s;
38
+ @key = value.bytes;
39
39
  end
40
40
  def #{name}
41
41
  @key;
42
42
  end
43
+ if @key_type.downcase == 'timeuuid' or @key_type.downcase == 'time_uuid'
44
+ def #{name}_str
45
+ SimpleUUID::UUID.new(@key).to_guid
46
+ end
47
+ end
43
48
  EVAL
44
49
  end
45
50
 
@@ -47,6 +52,9 @@ module CassandraModel
47
52
  columns[name] = type
48
53
  class_eval "def #{name}; #{type.capitalize}Type.load(@attributes['#{name}']); end"
49
54
  class_eval "def #{name}=(value); @attributes['#{name}'] = #{type.capitalize}Type.dump(value); end"
55
+ if type.downcase == 'timeuuid' or type.downcase == 'time_uuid'
56
+ class_eval "def #{name}_str; #{type.capitalize}Type.load(@attributes['#{name}']).to_guid; end"
57
+ end
50
58
  end
51
59
 
52
60
  def validate(&block)
@@ -134,7 +134,17 @@ module CassandraModel
134
134
  def attrs2write attrs
135
135
  res = {}
136
136
  attrs.each do |key, item|
137
- res[key] = item.kind_of?(Integer) ? Cassandra::Long.new(item).to_s : item
137
+ res[key] = case item
138
+ when ::Integer
139
+ Cassandra::Long.new(item).bytes
140
+ when ::Time
141
+ Cassandra::Long.new(item.utc.to_i).bytes
142
+ when ::DateTime
143
+ Cassandra::Long.new(item.to_time.utc.to_i).bytes
144
+ else
145
+ # String, Cassandra::Long, Float, Boolean
146
+ item.to_s
147
+ end
138
148
  end
139
149
  return res
140
150
  end
@@ -156,7 +166,7 @@ module CassandraModel
156
166
  end
157
167
 
158
168
  def init_model(key, attrs)
159
- return new(attrs, false).tap do |object|
169
+ return new(attrs, true).tap do |object|
160
170
  object.key = key
161
171
  object.new_record = false
162
172
  object.deleted! if attrs.empty?
@@ -211,16 +221,16 @@ module CassandraModel
211
221
  (results || {}).each { |slice|
212
222
 
213
223
  ordered_hash = Cassandra::OrderedHash.new
214
- if(!slice.nil? and slice.columns.kind_of?(Array))
215
- slice.columns.each do |column|
216
- if column.kind_of?(CassandraThrift::ColumnOrSuperColumn)
224
+ if !slice.nil? and slice.size > 1
225
+ slice[1].each do |column|
226
+ if column.kind_of?(CassandraThrift::ColumnOrSuperColumn)
217
227
  if !column.column.nil?
218
228
  ordered_hash[column.column.name] = column.column.value
219
229
  end
220
230
  end
221
231
  end
222
232
  end
223
- model = init_model(slice.key, ordered_hash)
233
+ model = init_model(slice[0], ordered_hash)
224
234
  model.readonly! if readonly
225
235
  records.push(model) unless nofilter && model.deleted?
226
236
  }
@@ -265,7 +275,8 @@ module CassandraModel
265
275
 
266
276
  records = []
267
277
  benchmark("CassandraModel[#{self.name}].find_every, keyrange: #{keyrange.to_s}") do
268
- results = connection.get_range_columns(column_family, columns.stringify_keys.keys,
278
+ results = connection.get_range(column_family,
279
+ :columns => columns.stringify_keys.keys,
269
280
  :start => keyrange.first, :finish => keyrange.last, :count => (options[:limit] || 100))
270
281
 
271
282
  (results || {}).each { |key, columns|
@@ -36,11 +36,11 @@ module CassandraModel
36
36
 
37
37
  class DatetimeType
38
38
  def self.dump(v)
39
- !v.blank? && v.strftime('%FT%T%z')
39
+ !v.blank? && Cassandra::Long.new(v.utc.to_i)
40
40
  end
41
41
 
42
42
  def self.load(v)
43
- !v.blank? && ::DateTime.strptime(v, '%FT%T%z')
43
+ !v.blank? && ::Time.at(v.to_i)
44
44
  end
45
45
  end
46
46
 
@@ -73,4 +73,4 @@ module CassandraModel
73
73
  SimpleUUID::UUID.new(v)
74
74
  end
75
75
  end
76
- end
76
+ end
@@ -1,3 +1,3 @@
1
1
  class CassandraModel
2
- VERSION = '0.0.9'
2
+ VERSION = '0.1.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cassilds-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-09-19 00:00:00.000000000Z
13
+ date: 2011-09-20 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: shoulda
17
- requirement: &19416780 !ruby/object:Gem::Requirement
17
+ requirement: &20771940 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *19416780
25
+ version_requirements: *20771940
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: cassilds
28
- requirement: &19416180 !ruby/object:Gem::Requirement
28
+ requirement: &20770340 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *19416180
36
+ version_requirements: *20770340
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: simple_uuid
39
- requirement: &19412420 !ruby/object:Gem::Requirement
39
+ requirement: &20766840 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,12 +44,12 @@ dependencies:
44
44
  version: '0'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *19412420
47
+ version_requirements: *20766840
48
48
  description: Cassandra-model allows you to map ColumnFamily/SuperColumnFamily in Cassandra
49
49
  to Ruby objects. It was designed to be fast and simple.
50
50
  email:
51
51
  - tienlx@gmail.com
52
- - ygor@umanni.com
52
+ - contato@umanni.com
53
53
  executables: []
54
54
  extensions: []
55
55
  extra_rdoc_files:
@@ -101,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
101
  version: '0'
102
102
  requirements: []
103
103
  rubyforge_project:
104
- rubygems_version: 1.8.8
104
+ rubygems_version: 1.8.10
105
105
  signing_key:
106
106
  specification_version: 3
107
107
  summary: Simple model support for Cassandra ColumnFamily/SuperColumnFamily mapping