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.
@@ -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
@@ -1,3 +1,3 @@
1
1
  class CassandraModel
2
- VERSION = '0.1.5'
2
+ VERSION = '0.1.6'
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.1.5
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-24 00:00:00.000000000Z
13
+ date: 2011-09-26 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: shoulda
17
- requirement: &11489860 !ruby/object:Gem::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: *11489860
25
+ version_requirements: *10560600
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: cassilds
28
- requirement: &11487960 !ruby/object:Gem::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: *11487960
36
+ version_requirements: *10560080
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: cassilds-connection-pool
39
- requirement: &11465120 !ruby/object:Gem::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: *11465120
47
+ version_requirements: *10559600
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: simple_uuid
50
- requirement: &11435440 !ruby/object:Gem::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: *11435440
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: