cassandro 1.0.7 → 1.1.0
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.
- checksums.yaml +8 -8
- data/cassandro.gemspec +1 -1
- data/lib/cassandro/model.rb +19 -8
- data/test/cassandro_model_test.rb +28 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MGY2MDljZDAzYjFhOGZmYzZhZjM4MjE0YTcyOTIwNDYxZTIwNTQ4OA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
Y2M3MTA2ZTVjMGJkOTZjNTdiNWZmNGY0NzE0YzU4ZjMyNTM3NmFmNw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MjNjYjQ5MjA5MmJmZGNmMjVlZWE3NWRkNzdlYWQ5OTg1NWVhZjlhMmU0OTE1
|
10
|
+
N2E5NjNjZGVlNTFjZDE2NDAwNTJmMWY4ZmIyMzRkMWMyN2M1ODU1OTE0ODBi
|
11
|
+
MDhkODlhN2FmMjhkNWM3NjJlYWRiNzBhNmRlZDU5MjFlZTNlYWE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MDc2OTk4YTA4NDc3MzI1MGZmMmViMWYxYjdjMjBkNGFiYTIyNjI4MmVlMDIz
|
14
|
+
ZGM5N2EzZDk1Y2ZlYjM0N2IwMmJmODM1NWU4ZWNkNDkxMmM3NDFjYmUzMTIy
|
15
|
+
ZTdlZDQ4MmRhMGRlOTM1YzAwMGNjYTZmYmMwZTM0YTU4MjY2ZGY=
|
data/cassandro.gemspec
CHANGED
data/lib/cassandro/model.rb
CHANGED
@@ -152,10 +152,14 @@ module Cassandro
|
|
152
152
|
end
|
153
153
|
|
154
154
|
def self.[](value)
|
155
|
+
return nil if value.nil? || (value.respond_to?(:empty?) && value.empty?)
|
156
|
+
|
155
157
|
if value.is_a?(Hash)
|
156
|
-
where = "#{value.map
|
158
|
+
where = "#{value.keys.map{ |k| "#{k} = ?" }.join(' AND ')} ALLOW FILTERING"
|
159
|
+
values = value.map{ |k,v| casts[k] == :uuid ? Cassandra::Uuid.new(v) : v }
|
157
160
|
else
|
158
|
-
where = "#{partition_key} =
|
161
|
+
where = "#{partition_key} = ?"
|
162
|
+
values = [casts[partition_key] == :uuid ? Cassandra::Uuid.new(value) : value]
|
159
163
|
end
|
160
164
|
|
161
165
|
query = <<-QUERY
|
@@ -164,7 +168,9 @@ module Cassandro
|
|
164
168
|
WHERE #{where}
|
165
169
|
QUERY
|
166
170
|
|
167
|
-
|
171
|
+
st = Cassandro.client.prepare(query)
|
172
|
+
result = Cassandro.client.execute(st, *values)
|
173
|
+
|
168
174
|
return nil unless result.any?
|
169
175
|
|
170
176
|
self.new(result.first, true)
|
@@ -204,12 +210,17 @@ module Cassandro
|
|
204
210
|
results
|
205
211
|
end
|
206
212
|
|
207
|
-
def self.count(key, value)
|
208
|
-
|
209
|
-
query = "SELECT count(*) FROM #{table_name} WHERE #{key} = ? ALLOW FILTERING"
|
213
|
+
def self.count(key = nil, value = nil)
|
214
|
+
query = "SELECT count(*) FROM #{table_name}"
|
210
215
|
|
211
|
-
|
212
|
-
|
216
|
+
if key && value
|
217
|
+
key = key.to_sym
|
218
|
+
query << " WHERE #{key} = ? ALLOW FILTERING"
|
219
|
+
st = Cassandro.client.prepare(query)
|
220
|
+
results = Cassandro.client.execute(st, value)
|
221
|
+
else
|
222
|
+
results = Cassandro.client.execute(query)
|
223
|
+
end
|
213
224
|
|
214
225
|
results.first["count"]
|
215
226
|
end
|
@@ -47,7 +47,7 @@ Protest.describe "Cassandro Model" do
|
|
47
47
|
test "allows setting and getting attributes" do
|
48
48
|
uuid = SecureRandom.uuid
|
49
49
|
test = Test.new(test_col_1: uuid, test_col_2: 'test_value_2')
|
50
|
-
assert_equal uuid, test.test_col_1
|
50
|
+
assert_equal uuid.to_s, test.test_col_1
|
51
51
|
assert_equal 'test_value_2', test.test_col_2
|
52
52
|
end
|
53
53
|
end
|
@@ -124,9 +124,35 @@ Protest.describe "Cassandro Model" do
|
|
124
124
|
uuid = SecureRandom.uuid
|
125
125
|
Test.create(test_col_1: uuid, test_col_2: 'test_value_2')
|
126
126
|
test = Test[uuid]
|
127
|
-
assert_equal uuid, test.test_col_1.to_s
|
127
|
+
assert_equal uuid.to_s, test.test_col_1.to_s
|
128
128
|
assert_equal "test_value_2", test.test_col_2
|
129
129
|
end
|
130
|
+
|
131
|
+
test "gets row with nil or empty values" do
|
132
|
+
test = Test[nil]
|
133
|
+
assert_equal nil, test
|
134
|
+
|
135
|
+
test = Test[""]
|
136
|
+
assert_equal nil, test
|
137
|
+
|
138
|
+
test = Test[{}]
|
139
|
+
assert_equal nil, test
|
140
|
+
end
|
141
|
+
|
142
|
+
test "counts the rows" do
|
143
|
+
Test.create(test_col_1: SecureRandom.uuid, test_col_2: 'test_value_2')
|
144
|
+
Test.create(test_col_1: SecureRandom.uuid, test_col_2: 'test_value_2')
|
145
|
+
|
146
|
+
assert_equal Test.all.size, Test.count
|
147
|
+
end
|
148
|
+
|
149
|
+
test "counts the rows with filter" do
|
150
|
+
uuid = SecureRandom.uuid
|
151
|
+
Test.create(test_col_1: uuid, test_col_2: 'test_value_2')
|
152
|
+
Test.create(test_col_1: SecureRandom.uuid, test_col_2: 'test_value_2')
|
153
|
+
|
154
|
+
assert_equal 1, Test.count(:test_col_1, Cassandra::Uuid.new(uuid))
|
155
|
+
end
|
130
156
|
end
|
131
157
|
|
132
158
|
context 'Updating' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cassandro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lautaro Orazi
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-03-
|
12
|
+
date: 2015-03-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cassandra-driver
|