cassilds-model 0.0.5 → 0.0.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.
@@ -1,5 +1,6 @@
1
1
  require 'active_support/core_ext/hash/keys'
2
2
  require 'active_support/core_ext/array/extract_options'
3
+ require 'cassandra/ordered_hash'
3
4
  module CassandraModel
4
5
  module Persistence
5
6
  def self.included(base)
@@ -108,6 +109,10 @@ module CassandraModel
108
109
  else find_from_ids(args, options)
109
110
  end
110
111
  end
112
+
113
+ def where(search_clauses)
114
+ find_where(search_clauses)
115
+ end
111
116
 
112
117
  private
113
118
 
@@ -180,6 +185,37 @@ module CassandraModel
180
185
  options.update({:limit => 1, :order => :desc, :reversed => true})
181
186
  return find_every(options).first
182
187
  end
188
+
189
+ def find_where(search_clauses)
190
+ options = options || {}
191
+ nofilter = options.delete(:no_filter)
192
+ readonly = options.delete(:readonly)
193
+
194
+ expressions = search_clauses.collect do |expression|
195
+ connection.create_idx_expr(expression[:column_name], expression[:value], expression[:comparison])
196
+ end
197
+
198
+ records = []
199
+ idx_clause = connection.create_idx_clause(expressions)
200
+ results = connection.get_indexed_slices(column_family, idx_clause)
201
+ (results || {}).each { |slice|
202
+
203
+ ordered_hash = Cassandra::OrderedHash.new
204
+ if(!slice.nil? and slice.columns.kind_of?(Array))
205
+ slice.columns.each do |column|
206
+ if column.kind_of?(CassandraThrift::ColumnOrSuperColumn)
207
+ if !column.column.nil?
208
+ ordered_hash[column.column.name] = column.column.value
209
+ end
210
+ end
211
+ end
212
+ end
213
+ model = init_model(slice.key, ordered_hash)
214
+ model.readonly! if readonly
215
+ records.push(model) unless nofilter && model.deleted?
216
+ }
217
+ return records
218
+ end
183
219
 
184
220
  def find_every(options)
185
221
  options = options || {}
@@ -1,3 +1,3 @@
1
1
  class CassandraModel
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.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.0.5
4
+ version: 0.0.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-08-19 00:00:00.000000000Z
13
+ date: 2011-08-29 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: shoulda
17
- requirement: &24681920 !ruby/object:Gem::Requirement
17
+ requirement: &10968220 !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: *24681920
25
+ version_requirements: *10968220
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: cassilds
28
- requirement: &24681500 !ruby/object:Gem::Requirement
28
+ requirement: &10967800 !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: *24681500
36
+ version_requirements: *10967800
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: simple_uuid
39
- requirement: &24680940 !ruby/object:Gem::Requirement
39
+ requirement: &10967240 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,7 +44,7 @@ dependencies:
44
44
  version: '0'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *24680940
47
+ version_requirements: *10967240
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: