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.
- data/cassilds-model.gemspec +1 -1
- data/lib/cassandra-model.rb +2 -2
- data/lib/cassandra-model/base.rb +9 -1
- data/lib/cassandra-model/persistence.rb +18 -7
- data/lib/cassandra-model/types.rb +3 -3
- data/lib/cassandra-model/version.rb +1 -1
- metadata +10 -10
data/cassilds-model.gemspec
CHANGED
@@ -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", "
|
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.}
|
data/lib/cassandra-model.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'cassandra
|
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'
|
data/lib/cassandra-model/base.rb
CHANGED
@@ -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.
|
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] =
|
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,
|
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
|
215
|
-
slice.
|
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
|
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.
|
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.
|
39
|
+
!v.blank? && Cassandra::Long.new(v.utc.to_i)
|
40
40
|
end
|
41
41
|
|
42
42
|
def self.load(v)
|
43
|
-
!v.blank? && ::
|
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
|
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
|
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-
|
13
|
+
date: 2011-09-20 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: shoulda
|
17
|
-
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: *
|
25
|
+
version_requirements: *20771940
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: cassilds
|
28
|
-
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: *
|
36
|
+
version_requirements: *20770340
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: simple_uuid
|
39
|
-
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: *
|
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
|
-
-
|
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.
|
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
|