cassilds-model 0.1.7 → 0.1.8
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/lib/cassandra-model/persistence.rb +36 -35
- data/lib/cassandra-model/version.rb +1 -1
- metadata +10 -10
@@ -135,18 +135,18 @@ module CassandraModel
|
|
135
135
|
res = {}
|
136
136
|
attrs.each do |key, item|
|
137
137
|
res[key] = case item
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
138
|
+
when Hash
|
139
|
+
::JSON.dump(item)
|
140
|
+
when ::Integer
|
141
|
+
Cassandra::Long.new(item).bytes
|
142
|
+
when ::Time
|
143
|
+
Cassandra::Long.new(item.utc.to_i).bytes
|
144
|
+
when ::DateTime
|
145
|
+
Cassandra::Long.new(item.to_time.utc.to_i).bytes
|
146
|
+
else
|
147
|
+
# String, Cassandra::Long, Float, Boolean, TimeuuidType
|
148
|
+
item.to_s
|
149
|
+
end
|
150
150
|
end
|
151
151
|
return res
|
152
152
|
end
|
@@ -180,13 +180,14 @@ module CassandraModel
|
|
180
180
|
raise RecordNotFound, "Couldn't find #{name} without an ID" if key.blank?
|
181
181
|
options = options || {}
|
182
182
|
readonly = options.delete(:readonly)
|
183
|
+
column_names = options.delete(:select) || columns.stringify_keys.keys
|
183
184
|
|
184
185
|
model = nil
|
185
186
|
benchmark("CassandraModel[#{self.name}].find_one, key: #{key.to_s}") do
|
186
|
-
ret = connection.get_columns(column_family, key,
|
187
|
+
ret = connection.get_columns(column_family, key, column_names, options)
|
187
188
|
unless ret.empty?
|
188
189
|
attrs = {}
|
189
|
-
|
190
|
+
column_names.each_with_index do |key, idx|
|
190
191
|
attrs[key] = ret[idx]
|
191
192
|
end
|
192
193
|
model = init_model(key, attrs)
|
@@ -215,6 +216,7 @@ module CassandraModel
|
|
215
216
|
readonly = options.delete(:readonly)
|
216
217
|
keyrange = options[:keyrange]
|
217
218
|
keyrange = ''..'' if keyrange.blank?
|
219
|
+
|
218
220
|
column_names = []
|
219
221
|
if select.kind_of?(String)
|
220
222
|
column_names = select.split(',').collect! {|n| n.strip!}
|
@@ -263,6 +265,7 @@ module CassandraModel
|
|
263
265
|
raise(CassandraModelError, "Columns param cannot be nil") if columns.nil?
|
264
266
|
options = options || {}
|
265
267
|
readonly = options.delete(:readonly)
|
268
|
+
|
266
269
|
column_names = []
|
267
270
|
if columns.kind_of?(String)
|
268
271
|
column_names = columns.split(',').collect! {|n| n.strip!}
|
@@ -277,7 +280,7 @@ module CassandraModel
|
|
277
280
|
ret = connection.get_columns(column_family, key, column_names, options)
|
278
281
|
unless ret.empty?
|
279
282
|
attrs = {}
|
280
|
-
|
283
|
+
column_names.each_with_index do |key, idx|
|
281
284
|
attrs[key] = ret[idx]
|
282
285
|
end
|
283
286
|
model = init_model(key, attrs)
|
@@ -291,14 +294,15 @@ module CassandraModel
|
|
291
294
|
options = options || {}
|
292
295
|
nofilter = options.delete(:no_filter)
|
293
296
|
readonly = options.delete(:readonly)
|
297
|
+
columns_names = options.delete(:select) || columns.stringify_keys.keys
|
294
298
|
keyrange = options[:keyrange]
|
295
299
|
keyrange = ''..'' if keyrange.blank?
|
296
300
|
|
297
301
|
records = []
|
298
302
|
benchmark("CassandraModel[#{self.name}].find_every, keyrange: #{keyrange.to_s}") do
|
299
|
-
results = connection.get_range(column_family,
|
300
|
-
:
|
301
|
-
:
|
303
|
+
results = connection.get_range(column_family, :columns => columns_names,
|
304
|
+
:start => keyrange.first, :finish => keyrange.last,
|
305
|
+
:count => (options[:count] || 100), :key_count => (options[:limit] || 100))
|
302
306
|
|
303
307
|
(results || {}).each { |key, columns|
|
304
308
|
model = init_model(key, columns)
|
@@ -337,27 +341,24 @@ module CassandraModel
|
|
337
341
|
end
|
338
342
|
|
339
343
|
def find_some(ids, options)
|
344
|
+
ids = ids.map {|i| validate_key_type(i)}
|
345
|
+
|
340
346
|
options = options || {}
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
expected_size =
|
345
|
-
if options[:limit] && ids.size > options[:limit]
|
346
|
-
options[:limit]
|
347
|
-
else
|
348
|
-
ids.size
|
349
|
-
end
|
347
|
+
nofilter = options.delete(:no_filter)
|
348
|
+
readonly = options.delete(:readonly)
|
349
|
+
column_names = options.delete(:select) || columns.stringify_keys.keys
|
350
350
|
|
351
|
-
|
352
|
-
|
353
|
-
|
351
|
+
result = []
|
352
|
+
benchmark("CassandraModel[#{self.name}].find_some, keys: #{ids.to_s}") do
|
353
|
+
ret = connection.multi_get_columns(column_family, ids, column_names, options)
|
354
|
+
(ret || {}).each do |key, value|
|
355
|
+
model = init_model(key, value)
|
356
|
+
model.readonly! if readonly
|
357
|
+
result << model unless nofilter && model.deleted?
|
358
|
+
end
|
354
359
|
end
|
355
360
|
|
356
|
-
|
357
|
-
result
|
358
|
-
else
|
359
|
-
raise RecordNotFound, "Couldn't find all #{name.pluralize} with IDs (#{ids.inspect}) (found #{result.size} results, but was looking for #{expected_size})"
|
360
|
-
end
|
361
|
+
result
|
361
362
|
end
|
362
363
|
|
363
364
|
VALID_FIND_OPTIONS = [ :select, :keyrange, :conditions, :limit, :count, :offset,
|
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.1.
|
4
|
+
version: 0.1.8
|
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-
|
13
|
+
date: 2011-10-05 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: shoulda
|
17
|
-
requirement: &
|
17
|
+
requirement: &22780920 !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: *22780920
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: cassilds
|
28
|
-
requirement: &
|
28
|
+
requirement: &22780400 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 0.12.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *22780400
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: cassilds-connection-pool
|
39
|
-
requirement: &
|
39
|
+
requirement: &22779920 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 0.0.2
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *22779920
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: simple_uuid
|
50
|
-
requirement: &
|
50
|
+
requirement: &22779440 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *22779440
|
59
59
|
description: Cassandra-model allows you to map ColumnFamily/SuperColumnFamily in Cassandra
|
60
60
|
to Ruby objects. It was designed to be fast and simple.
|
61
61
|
email:
|