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.
- data/lib/cassandra-model/persistence.rb +36 -0
- data/lib/cassandra-model/version.rb +1 -1
- metadata +8 -8
@@ -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 || {}
|
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.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-
|
13
|
+
date: 2011-08-29 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: shoulda
|
17
|
-
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: *
|
25
|
+
version_requirements: *10968220
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: cassilds
|
28
|
-
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: *
|
36
|
+
version_requirements: *10967800
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: simple_uuid
|
39
|
-
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: *
|
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:
|