cassilds-model 0.1.5 → 0.1.6
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 +17 -6
- data/lib/cassandra-model/types.rb +5 -1
- data/lib/cassandra-model/version.rb +1 -1
- metadata +10 -10
@@ -110,8 +110,8 @@ module CassandraModel
|
|
110
110
|
end
|
111
111
|
end
|
112
112
|
|
113
|
-
def where(search_clauses, options = {})
|
114
|
-
find_where(search_clauses, options)
|
113
|
+
def where(search_clauses, select = [], options = {})
|
114
|
+
find_where(search_clauses, select, options)
|
115
115
|
end
|
116
116
|
|
117
117
|
# key
|
@@ -209,12 +209,23 @@ module CassandraModel
|
|
209
209
|
return find_every(options).first
|
210
210
|
end
|
211
211
|
|
212
|
-
def find_where(search_clauses, options)
|
212
|
+
def find_where(search_clauses, select, options)
|
213
213
|
options = options || {}
|
214
214
|
nofilter = options.delete(:no_filter)
|
215
215
|
readonly = options.delete(:readonly)
|
216
216
|
keyrange = options[:keyrange]
|
217
217
|
keyrange = ''..'' if keyrange.blank?
|
218
|
+
column_names = []
|
219
|
+
if select.kind_of?(String)
|
220
|
+
column_names = select.split(',').collect! {|n| n.strip!}
|
221
|
+
elsif select.kind_of?(Array)
|
222
|
+
column_names = select
|
223
|
+
else
|
224
|
+
raise(CassandraModelError, "Invalid columns #{select}")
|
225
|
+
end
|
226
|
+
if column_names.empty?
|
227
|
+
column_names = nil
|
228
|
+
end
|
218
229
|
|
219
230
|
expressions = search_clauses.collect do |expression|
|
220
231
|
connection.create_idx_expr(expression[:column_name], expression[:value], expression[:comparison])
|
@@ -222,7 +233,7 @@ module CassandraModel
|
|
222
233
|
|
223
234
|
records = []
|
224
235
|
idx_clause = connection.create_index_clause(expressions, keyrange.first, (options[:limit] || 100))
|
225
|
-
results = connection.get_indexed_slices(column_family, idx_clause, :start => keyrange.first,
|
236
|
+
results = connection.get_indexed_slices(column_family, idx_clause, column_names, :start => keyrange.first,
|
226
237
|
:finish => keyrange.last, :count => (options[:count] || 100), :key_count => (options[:limit] || 100))
|
227
238
|
(results || {}).each { |slice|
|
228
239
|
|
@@ -287,7 +298,7 @@ module CassandraModel
|
|
287
298
|
benchmark("CassandraModel[#{self.name}].find_every, keyrange: #{keyrange.to_s}") do
|
288
299
|
results = connection.get_range(column_family,
|
289
300
|
:columns => columns.stringify_keys.keys,
|
290
|
-
:start => keyrange.first, :finish => keyrange.last, :count => (options[:limit] || 100))
|
301
|
+
:start => keyrange.first, :finish => keyrange.last, :count => (options[:count] || 100), :key_count => (options[:limit] || 100))
|
291
302
|
|
292
303
|
(results || {}).each { |key, columns|
|
293
304
|
model = init_model(key, columns)
|
@@ -349,7 +360,7 @@ module CassandraModel
|
|
349
360
|
end
|
350
361
|
end
|
351
362
|
|
352
|
-
VALID_FIND_OPTIONS = [ :select, :keyrange, :conditions, :limit, :offset,
|
363
|
+
VALID_FIND_OPTIONS = [ :select, :keyrange, :conditions, :limit, :count, :offset,
|
353
364
|
:order, :readonly ]
|
354
365
|
|
355
366
|
def validate_find_options(options) #:nodoc:
|
@@ -73,12 +73,16 @@ module CassandraModel
|
|
73
73
|
|
74
74
|
class BooleanType
|
75
75
|
def self.dump(v)
|
76
|
-
v ? '1' : '0'
|
76
|
+
object_to_boolean(v) ? '1' : '0'
|
77
77
|
end
|
78
78
|
|
79
79
|
def self.load(v)
|
80
80
|
v == '1'
|
81
81
|
end
|
82
|
+
|
83
|
+
def self.object_to_boolean value
|
84
|
+
return [true, "true", 1, "1", "T", "t", "Y", "y", "yes"].include?(value.class == String ? value.downcase : value)
|
85
|
+
end
|
82
86
|
end
|
83
87
|
|
84
88
|
class TimeuuidType
|
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.6
|
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-26 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: shoulda
|
17
|
-
requirement: &
|
17
|
+
requirement: &10560600 !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: *10560600
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: cassilds
|
28
|
-
requirement: &
|
28
|
+
requirement: &10560080 !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: *10560080
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: cassilds-connection-pool
|
39
|
-
requirement: &
|
39
|
+
requirement: &10559600 !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: *10559600
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: simple_uuid
|
50
|
-
requirement: &
|
50
|
+
requirement: &10559120 !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: *10559120
|
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:
|