adapter-cassanity 0.5.0 → 0.6.0.beta1
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 +7 -0
- data/README.md +3 -15
- data/adapter-cassanity.gemspec +1 -1
- data/lib/adapter/cassanity.rb +14 -13
- data/lib/adapter/cassanity/version.rb +1 -1
- data/spec/cassanity_spec.rb +43 -64
- data/spec/helper.rb +4 -8
- metadata +18 -26
- data/examples/adapter_options.rb +0 -16
- data/examples/method_options.rb +0 -11
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1761583821e237acab173505a0b8a8571ace2eba
|
4
|
+
data.tar.gz: d1ef6ff6e5de5259dd88681ff1ab242910d2252e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a8546307ae7a8190cc91609d87159e22ee78d7120a367c758526dbc033b2b32ab41c709c8983c4e94c21792b6d707cb8234784a5c31e799d1e27e0348440d2f0
|
7
|
+
data.tar.gz: ac61ef85fd2d3b1e20315922142559847b64ee77b5b5a97d3b99f4f2fe10fa4bf97ff0e2a1854665b3bb7abc29113d9798f7cf47d11a3975b558709c5b3f3abd
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Adapter::Cassanity
|
1
|
+
# Adapter::Cassanity [](http://travis-ci.org/jnunemaker/adapter-cassanity)
|
2
2
|
|
3
3
|
Adapter for Cassanity. Defaults consistency to :quorum.
|
4
4
|
|
@@ -7,7 +7,7 @@ Adapter for Cassanity. Defaults consistency to :quorum.
|
|
7
7
|
```ruby
|
8
8
|
require 'adapter/cassanity'
|
9
9
|
|
10
|
-
client = Cassanity::Client.new('127.0.0.1
|
10
|
+
client = Cassanity::Client.new(['127.0.0.1'], 9160)
|
11
11
|
keyspace = client.keyspace('adapter_cassanity')
|
12
12
|
keyspace.recreate
|
13
13
|
|
@@ -27,15 +27,7 @@ client = apps
|
|
27
27
|
adapter = Adapter[:cassanity].new(client)
|
28
28
|
adapter.clear
|
29
29
|
|
30
|
-
|
31
|
-
using = {using: {consistency: :all}}
|
32
|
-
adapter = Adapter[:cassanity].new(client, {
|
33
|
-
read: using, # read using all consistency
|
34
|
-
write: using, # write using all consistency
|
35
|
-
delete: using, # delete using all consistency
|
36
|
-
})
|
37
|
-
|
38
|
-
id = CassandraCQL::UUID.new
|
30
|
+
id = Cql::TimeUuid::Generator.new.next
|
39
31
|
|
40
32
|
adapter.read(id) # => nil
|
41
33
|
|
@@ -50,10 +42,6 @@ adapter.read(id) # => {'id' => ..., 'name' => 'GitHub'}
|
|
50
42
|
|
51
43
|
adapter.clear
|
52
44
|
adapter.read(id) # => nil
|
53
|
-
|
54
|
-
# You can also override adapter options per method:
|
55
|
-
# This will perform read with consistency set to ONE.
|
56
|
-
adapter.read(id, using: {consistency: :one})
|
57
45
|
```
|
58
46
|
|
59
47
|
## Installation
|
data/adapter-cassanity.gemspec
CHANGED
data/lib/adapter/cassanity.rb
CHANGED
@@ -9,7 +9,7 @@ module Adapter
|
|
9
9
|
# Public
|
10
10
|
def read(key, options = nil)
|
11
11
|
operation_options = {where: where(key)}
|
12
|
-
adapter_options =
|
12
|
+
adapter_options = @options[:read]
|
13
13
|
arguments = update_arguments(operation_options, adapter_options, options)
|
14
14
|
|
15
15
|
rows = @client.select(arguments)
|
@@ -18,17 +18,17 @@ module Adapter
|
|
18
18
|
|
19
19
|
# Public
|
20
20
|
def write(key, attributes, options = nil)
|
21
|
-
operation_options =
|
22
|
-
adapter_options =
|
21
|
+
operation, operation_options = prepare_operation(options, :update, set: attributes, where: where(key))
|
22
|
+
adapter_options = @options[:write]
|
23
23
|
arguments = update_arguments(operation_options, adapter_options, options)
|
24
24
|
|
25
|
-
@client.
|
25
|
+
@client.send(operation, arguments)
|
26
26
|
end
|
27
27
|
|
28
28
|
# Public
|
29
29
|
def delete(key, options = nil)
|
30
30
|
operation_options = {where: where(key)}
|
31
|
-
adapter_options =
|
31
|
+
adapter_options = @options[:delete]
|
32
32
|
arguments = update_arguments(operation_options, adapter_options, options)
|
33
33
|
|
34
34
|
@client.delete(arguments)
|
@@ -45,6 +45,15 @@ module Adapter
|
|
45
45
|
{primary_key => key}
|
46
46
|
end
|
47
47
|
|
48
|
+
# Private.
|
49
|
+
def prepare_operation(options, operation, operation_options)
|
50
|
+
if options && (modifications = options[:modifications]) && modifications.any?
|
51
|
+
operation_options = {modifications: [ [operation, operation_options], *modifications ]}
|
52
|
+
operation = :batch
|
53
|
+
end
|
54
|
+
[ operation, operation_options ]
|
55
|
+
end
|
56
|
+
|
48
57
|
# Private
|
49
58
|
def update_arguments(operation_options, adapter_options, method_options)
|
50
59
|
keys = operation_options.keys
|
@@ -61,14 +70,6 @@ module Adapter
|
|
61
70
|
|
62
71
|
operation_options
|
63
72
|
end
|
64
|
-
|
65
|
-
# Private
|
66
|
-
def with_default_consistency(options)
|
67
|
-
options ||= {}
|
68
|
-
options[:using] ||= {}
|
69
|
-
options[:using][:consistency] ||= :quorum
|
70
|
-
options
|
71
|
-
end
|
72
73
|
end
|
73
74
|
end
|
74
75
|
|
data/spec/cassanity_spec.rb
CHANGED
@@ -16,63 +16,20 @@ describe "Cassanity adapter" do
|
|
16
16
|
it_behaves_like 'an adapter'
|
17
17
|
end
|
18
18
|
|
19
|
-
context "default read consistency" do
|
20
|
-
it "is :quorum" do
|
21
|
-
client = COLUMN_FAMILIES[:single]
|
22
|
-
adapter = Adapter[adapter_name].new(client, primary_key: :some_key,)
|
23
|
-
|
24
|
-
client.should_receive(:select).with({
|
25
|
-
where: {:some_key => 'foo'},
|
26
|
-
using: {consistency: :quorum},
|
27
|
-
}).and_return([])
|
28
|
-
|
29
|
-
adapter.read('foo')
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context "default write consistency" do
|
34
|
-
it "is :quorum" do
|
35
|
-
client = COLUMN_FAMILIES[:single]
|
36
|
-
adapter = Adapter[adapter_name].new(client, primary_key: :some_key,)
|
37
|
-
|
38
|
-
client.should_receive(:update).with({
|
39
|
-
set: {'name' => 'New Name'},
|
40
|
-
where: {:some_key => 'foo'},
|
41
|
-
using: {consistency: :quorum},
|
42
|
-
})
|
43
|
-
|
44
|
-
adapter.write('foo', {'name' => 'New Name'})
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
context "default delete consistency" do
|
49
|
-
it "is :quorum" do
|
50
|
-
client = COLUMN_FAMILIES[:single]
|
51
|
-
adapter = Adapter[adapter_name].new(client, primary_key: :some_key)
|
52
|
-
|
53
|
-
client.should_receive(:delete).with({
|
54
|
-
where: {:some_key => 'foo'},
|
55
|
-
using: {consistency: :quorum},
|
56
|
-
})
|
57
|
-
|
58
|
-
adapter.delete('foo')
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
19
|
context "with adapter read options" do
|
63
20
|
it "uses read options for read method" do
|
64
21
|
client = COLUMN_FAMILIES[:single]
|
65
22
|
options = {
|
66
23
|
primary_key: :some_key,
|
67
24
|
read: {
|
68
|
-
using: {
|
25
|
+
using: {ttl: 10},
|
69
26
|
},
|
70
27
|
}
|
71
28
|
adapter = Adapter[adapter_name].new(client, options)
|
72
29
|
|
73
30
|
client.should_receive(:select).with({
|
74
31
|
where: {:some_key => 'foo'},
|
75
|
-
using: {
|
32
|
+
using: {ttl: 10},
|
76
33
|
}).and_return([])
|
77
34
|
|
78
35
|
adapter.read('foo')
|
@@ -84,14 +41,14 @@ describe "Cassanity adapter" do
|
|
84
41
|
primary_key: :some_key,
|
85
42
|
read: {
|
86
43
|
where: {:some_key => 'bar'},
|
87
|
-
using: {
|
44
|
+
using: {ttl: 10},
|
88
45
|
},
|
89
46
|
}
|
90
47
|
adapter = Adapter[adapter_name].new(client, options)
|
91
48
|
|
92
49
|
client.should_receive(:select).with({
|
93
50
|
where: {:some_key => 'foo'},
|
94
|
-
using: {
|
51
|
+
using: {ttl: 10},
|
95
52
|
}).and_return([])
|
96
53
|
|
97
54
|
adapter.read('foo')
|
@@ -102,17 +59,17 @@ describe "Cassanity adapter" do
|
|
102
59
|
options = {
|
103
60
|
primary_key: :some_key,
|
104
61
|
read: {
|
105
|
-
using: {
|
62
|
+
using: {ttl: 20},
|
106
63
|
},
|
107
64
|
}
|
108
65
|
adapter = Adapter[adapter_name].new(client, options)
|
109
66
|
|
110
67
|
client.should_receive(:select).with({
|
111
68
|
where: {:some_key => 'foo'},
|
112
|
-
using: {
|
69
|
+
using: {ttl: 10},
|
113
70
|
}).and_return([])
|
114
71
|
|
115
|
-
adapter.read('foo', using: {
|
72
|
+
adapter.read('foo', using: {ttl: 10})
|
116
73
|
end
|
117
74
|
end
|
118
75
|
|
@@ -122,7 +79,7 @@ describe "Cassanity adapter" do
|
|
122
79
|
options = {
|
123
80
|
primary_key: :some_key,
|
124
81
|
write: {
|
125
|
-
using: {
|
82
|
+
using: {ttl: 10},
|
126
83
|
},
|
127
84
|
}
|
128
85
|
adapter = Adapter[adapter_name].new(client, options)
|
@@ -130,7 +87,7 @@ describe "Cassanity adapter" do
|
|
130
87
|
client.should_receive(:update).with({
|
131
88
|
set: {'name' => 'New Name'},
|
132
89
|
where: {:some_key => 'foo'},
|
133
|
-
using: {
|
90
|
+
using: {ttl: 10},
|
134
91
|
})
|
135
92
|
|
136
93
|
adapter.write('foo', {'name' => 'New Name'})
|
@@ -143,7 +100,7 @@ describe "Cassanity adapter" do
|
|
143
100
|
write: {
|
144
101
|
where: {:some_key => 'should not use this'},
|
145
102
|
set: {'name' => 'should not use this'},
|
146
|
-
using: {
|
103
|
+
using: {ttl: 10}
|
147
104
|
},
|
148
105
|
}
|
149
106
|
adapter = Adapter[adapter_name].new(client, options)
|
@@ -151,7 +108,7 @@ describe "Cassanity adapter" do
|
|
151
108
|
client.should_receive(:update).with({
|
152
109
|
set: {'name' => 'New Name'},
|
153
110
|
where: {:some_key => 'foo'},
|
154
|
-
using: {
|
111
|
+
using: {ttl: 10},
|
155
112
|
})
|
156
113
|
|
157
114
|
adapter.write('foo', {'name' => 'New Name'})
|
@@ -162,7 +119,7 @@ describe "Cassanity adapter" do
|
|
162
119
|
options = {
|
163
120
|
primary_key: :some_key,
|
164
121
|
write: {
|
165
|
-
using: {
|
122
|
+
using: {ttl: 10},
|
166
123
|
},
|
167
124
|
}
|
168
125
|
adapter = Adapter[adapter_name].new(client, options)
|
@@ -170,10 +127,32 @@ describe "Cassanity adapter" do
|
|
170
127
|
client.should_receive(:update).with({
|
171
128
|
set: {'name' => 'New Name'},
|
172
129
|
where: {:some_key => 'foo'},
|
173
|
-
using: {
|
130
|
+
using: {ttl: 20},
|
131
|
+
})
|
132
|
+
|
133
|
+
adapter.write('foo', {'name' => 'New Name'}, using: {ttl: 20})
|
134
|
+
end
|
135
|
+
|
136
|
+
it "accepts other batch operations" do
|
137
|
+
client = COLUMN_FAMILIES[:single]
|
138
|
+
options = {
|
139
|
+
primary_key: :some_key,
|
140
|
+
write: {
|
141
|
+
using: {ttl: 10},
|
142
|
+
},
|
143
|
+
}
|
144
|
+
adapter = Adapter[adapter_name].new(client, options)
|
145
|
+
|
146
|
+
client.should_receive(:batch).with({
|
147
|
+
modifications: [
|
148
|
+
[:update, set: {'name' => 'New Name'}, where: {:some_key => 'foo'}],
|
149
|
+
[:other],
|
150
|
+
],
|
151
|
+
using: {ttl: 10},
|
174
152
|
})
|
153
|
+
client.should_not_receive(:update)
|
175
154
|
|
176
|
-
adapter.write('foo', {'name' => 'New Name'}, using: {
|
155
|
+
adapter.write('foo', {'name' => 'New Name'}, using: {ttl: 10}, modifications: [ [:other] ])
|
177
156
|
end
|
178
157
|
end
|
179
158
|
|
@@ -183,14 +162,14 @@ describe "Cassanity adapter" do
|
|
183
162
|
options = {
|
184
163
|
primary_key: :some_key,
|
185
164
|
delete: {
|
186
|
-
using: {
|
165
|
+
using: {ttl: 10},
|
187
166
|
},
|
188
167
|
}
|
189
168
|
adapter = Adapter[adapter_name].new(client, options)
|
190
169
|
|
191
170
|
client.should_receive(:delete).with({
|
192
171
|
where: {:some_key => 'foo'},
|
193
|
-
using: {
|
172
|
+
using: {ttl: 10},
|
194
173
|
})
|
195
174
|
|
196
175
|
adapter.delete('foo')
|
@@ -202,14 +181,14 @@ describe "Cassanity adapter" do
|
|
202
181
|
primary_key: :some_key,
|
203
182
|
delete: {
|
204
183
|
where: {:some_key => 'bar'},
|
205
|
-
using: {
|
184
|
+
using: {ttl: 10},
|
206
185
|
},
|
207
186
|
}
|
208
187
|
adapter = Adapter[adapter_name].new(client, options)
|
209
188
|
|
210
189
|
client.should_receive(:delete).with({
|
211
190
|
where: {:some_key => 'foo'},
|
212
|
-
using: {
|
191
|
+
using: {ttl: 10},
|
213
192
|
})
|
214
193
|
|
215
194
|
adapter.delete('foo')
|
@@ -220,17 +199,17 @@ describe "Cassanity adapter" do
|
|
220
199
|
options = {
|
221
200
|
primary_key: :some_key,
|
222
201
|
delete: {
|
223
|
-
using: {
|
202
|
+
using: {ttl: 10},
|
224
203
|
},
|
225
204
|
}
|
226
205
|
adapter = Adapter[adapter_name].new(client, options)
|
227
206
|
|
228
207
|
client.should_receive(:delete).with({
|
229
208
|
where: {:some_key => 'foo'},
|
230
|
-
using: {
|
209
|
+
using: {ttl: 20},
|
231
210
|
})
|
232
211
|
|
233
|
-
adapter.delete('foo', using: {
|
212
|
+
adapter.delete('foo', using: {ttl: 20})
|
234
213
|
end
|
235
214
|
end
|
236
215
|
end
|
data/spec/helper.rb
CHANGED
@@ -19,15 +19,11 @@ logger = Logger.new(log_path.join('test.log'))
|
|
19
19
|
COLUMN_FAMILIES = {}
|
20
20
|
|
21
21
|
cassandra_setup = lambda { |args|
|
22
|
-
host = ENV.fetch('CASSANDRA_HOST', '127.0.0.1
|
22
|
+
host = ENV.fetch('CASSANDRA_HOST', '127.0.0.1')
|
23
|
+
port = ENV.fetch('CASSANDRA_PORT', '9042').to_i
|
23
24
|
keyspace_name = ENV.fetch('CASSANDRA_KEYSPACE_NAME', 'adapter_cassanity')
|
24
|
-
client =
|
25
|
-
|
26
|
-
client: client,
|
27
|
-
logger: logger,
|
28
|
-
})
|
29
|
-
connection = Cassanity::Connection.new(executor: executor)
|
30
|
-
keyspace = connection.keyspace(keyspace_name)
|
25
|
+
client = Cassanity::Client.new([host], port)
|
26
|
+
keyspace = client.keyspace(keyspace_name)
|
31
27
|
keyspace.recreate
|
32
28
|
|
33
29
|
COLUMN_FAMILIES[:single] = keyspace.column_family(:single, {
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adapter-cassanity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.6.0.beta1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- John Nunemaker
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-12-03 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: adapter
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,19 +27,23 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: cassanity
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - <
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.7'
|
34
|
+
- - '>='
|
36
35
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
36
|
+
version: 0.6.0.beta1
|
38
37
|
type: :runtime
|
39
38
|
prerelease: false
|
40
39
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
40
|
requirements:
|
43
|
-
- -
|
41
|
+
- - <
|
44
42
|
- !ruby/object:Gem::Version
|
45
|
-
version: '0.
|
43
|
+
version: '0.7'
|
44
|
+
- - '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 0.6.0.beta1
|
46
47
|
description: Adapter for Cassanity
|
47
48
|
email:
|
48
49
|
- nunemaker@gmail.com
|
@@ -60,9 +61,7 @@ files:
|
|
60
61
|
- README.md
|
61
62
|
- Rakefile
|
62
63
|
- adapter-cassanity.gemspec
|
63
|
-
- examples/adapter_options.rb
|
64
64
|
- examples/cassanity.rb
|
65
|
-
- examples/method_options.rb
|
66
65
|
- examples/shared_setup.rb
|
67
66
|
- lib/adapter-cassanity.rb
|
68
67
|
- lib/adapter/cassanity.rb
|
@@ -71,33 +70,26 @@ files:
|
|
71
70
|
- spec/helper.rb
|
72
71
|
homepage: ''
|
73
72
|
licenses: []
|
73
|
+
metadata: {}
|
74
74
|
post_install_message:
|
75
75
|
rdoc_options: []
|
76
76
|
require_paths:
|
77
77
|
- lib
|
78
78
|
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
-
none: false
|
80
79
|
requirements:
|
81
|
-
- -
|
80
|
+
- - '>='
|
82
81
|
- !ruby/object:Gem::Version
|
83
82
|
version: '0'
|
84
|
-
segments:
|
85
|
-
- 0
|
86
|
-
hash: 242222650800770136
|
87
83
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
|
-
none: false
|
89
84
|
requirements:
|
90
|
-
- -
|
85
|
+
- - '>'
|
91
86
|
- !ruby/object:Gem::Version
|
92
|
-
version:
|
93
|
-
segments:
|
94
|
-
- 0
|
95
|
-
hash: 242222650800770136
|
87
|
+
version: 1.3.1
|
96
88
|
requirements: []
|
97
89
|
rubyforge_project:
|
98
|
-
rubygems_version:
|
90
|
+
rubygems_version: 2.0.3
|
99
91
|
signing_key:
|
100
|
-
specification_version:
|
92
|
+
specification_version: 4
|
101
93
|
summary: Adapter for Cassanity
|
102
94
|
test_files:
|
103
95
|
- spec/cassanity_spec.rb
|
data/examples/adapter_options.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
require_relative 'shared_setup'
|
2
|
-
|
3
|
-
client = AppsCF
|
4
|
-
using = {using: {consistency: :one}}
|
5
|
-
adapter = Adapter[:cassanity].new(client, {
|
6
|
-
read: using,
|
7
|
-
write: using,
|
8
|
-
delete: using,
|
9
|
-
})
|
10
|
-
adapter.clear
|
11
|
-
|
12
|
-
id = CassandraCQL::UUID.new
|
13
|
-
|
14
|
-
adapter.write(id, {name: 'GitHub'})
|
15
|
-
pp adapter.read(id)
|
16
|
-
adapter.delete(id)
|
data/examples/method_options.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require_relative 'shared_setup'
|
2
|
-
|
3
|
-
client = AppsCF
|
4
|
-
adapter = Adapter[:cassanity].new(client)
|
5
|
-
adapter.clear
|
6
|
-
|
7
|
-
id = CassandraCQL::UUID.new
|
8
|
-
|
9
|
-
adapter.write(id, {name: 'GitHub'}, using: {consistency: :one})
|
10
|
-
pp adapter.read(id, using: {consistency: :one})
|
11
|
-
adapter.delete(id)
|