gotime-cassandra_object 4.10.0 → 4.10.1
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a094a6b0709d5666b254585cf07f2e8889abf318
|
4
|
+
data.tar.gz: f13ccf6c6431c0f576110ef956b18eb809367bd5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6fa0ffb1d1c554e906be4adf20ae4c1a0dac7148fa7bff4d15f9574750946f2f41d4833b86058f0d62825529a4a5d6f1e24dc19c8912afd86d2185ac48bbcd5
|
7
|
+
data.tar.gz: 5060c16d39315b8cc1c98855582450715ac3e30162ab9328a148e2fac2bdc6b401f44fd29fbbc2df2b66864fb5b08187c08079a48042f477dea4f9ea9793be94
|
@@ -8,7 +8,13 @@ module CassandraObject
|
|
8
8
|
|
9
9
|
module ClassMethods
|
10
10
|
def remove(id)
|
11
|
-
|
11
|
+
statement = "DELETE FROM #{column_family}#{write_option_string} WHERE "
|
12
|
+
if id.is_a?(Array)
|
13
|
+
statement += "KEY IN (?)"
|
14
|
+
else
|
15
|
+
statement += "KEY = ?"
|
16
|
+
end
|
17
|
+
execute_batchable_cql statement, id
|
12
18
|
end
|
13
19
|
|
14
20
|
def delete_all
|
@@ -1,6 +1,40 @@
|
|
1
1
|
module CassandraObject
|
2
2
|
module Types
|
3
3
|
class JsonType < BaseType
|
4
|
+
class DirtyHash < Hash
|
5
|
+
attr_accessor :record, :name, :options
|
6
|
+
def initialize(record, name, hash, options)
|
7
|
+
@record = record
|
8
|
+
@name = name.to_s
|
9
|
+
@options = options
|
10
|
+
|
11
|
+
self.merge!(hash)
|
12
|
+
@init_hash = self.hash
|
13
|
+
@init_value = hash
|
14
|
+
end
|
15
|
+
|
16
|
+
def []=(obj, val)
|
17
|
+
modifying do super end
|
18
|
+
end
|
19
|
+
|
20
|
+
def delete(obj)
|
21
|
+
modifying do super end
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
def modifying
|
26
|
+
result = yield
|
27
|
+
|
28
|
+
if !record.changed_attributes.key?(name) && @init_hash != self.hash
|
29
|
+
record.changed_attributes[name] = @init_value
|
30
|
+
end
|
31
|
+
|
32
|
+
record.send("#{name}=", self)
|
33
|
+
|
34
|
+
result
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
4
38
|
def encode(hash)
|
5
39
|
ActiveSupport::JSON.encode(hash)
|
6
40
|
end
|
@@ -8,6 +42,11 @@ module CassandraObject
|
|
8
42
|
def decode(str)
|
9
43
|
ActiveSupport::JSON.decode(str)
|
10
44
|
end
|
45
|
+
|
46
|
+
def wrap(record, name, value)
|
47
|
+
DirtyHash.new(record, name, Hash(value), options)
|
48
|
+
end
|
49
|
+
|
11
50
|
end
|
12
51
|
end
|
13
52
|
end
|
@@ -184,4 +184,40 @@ class CassandraObject::PersistenceTest < CassandraObject::TestCase
|
|
184
184
|
klass = Class.new { include CassandraObject::Persistence }
|
185
185
|
assert_equal %w{'a' 'b'}, klass.__send__(:quote_columns, %w{a b})
|
186
186
|
end
|
187
|
+
|
188
|
+
test 'remove' do
|
189
|
+
klass = temp_object do
|
190
|
+
string :name
|
191
|
+
end
|
192
|
+
|
193
|
+
record = klass.new(name: 'cool')
|
194
|
+
record.save!
|
195
|
+
|
196
|
+
id = record.id
|
197
|
+
assert_equal id, klass.find(id).id
|
198
|
+
|
199
|
+
klass.remove(id)
|
200
|
+
|
201
|
+
assert_raise CassandraObject::RecordNotFound do
|
202
|
+
klass.find(id)
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
test 'remove multiple' do
|
207
|
+
klass = temp_object do
|
208
|
+
string :name
|
209
|
+
end
|
210
|
+
|
211
|
+
ids = []
|
212
|
+
(1..10).each do
|
213
|
+
record = klass.new(name: 'cool')
|
214
|
+
record.save!
|
215
|
+
ids << record.id
|
216
|
+
end
|
217
|
+
|
218
|
+
klass.remove(ids)
|
219
|
+
|
220
|
+
assert_equal [], klass.find(ids)
|
221
|
+
end
|
222
|
+
|
187
223
|
end
|
@@ -9,4 +9,69 @@ class CassandraObject::Types::JsonTypeTest < CassandraObject::Types::TestCase
|
|
9
9
|
test 'decode' do
|
10
10
|
assert_equal({'a' => 'b'}, coder.decode({'a' => 'b'}.to_json))
|
11
11
|
end
|
12
|
+
|
13
|
+
test 'setting marks dirty' do
|
14
|
+
record = temp_object do
|
15
|
+
string :name
|
16
|
+
json :stuff
|
17
|
+
|
18
|
+
end.new name: 'abcd', stuff: Hash[a: 1, b: 2]
|
19
|
+
|
20
|
+
record.save!
|
21
|
+
assert !record.stuff_changed?
|
22
|
+
|
23
|
+
record.stuff[:c] = 3
|
24
|
+
|
25
|
+
assert record.stuff_changed?
|
26
|
+
assert_equal Hash[a: 1, b: 2, c: 3], record.stuff
|
27
|
+
end
|
28
|
+
|
29
|
+
test 'hash change marks dirty' do
|
30
|
+
record = temp_object do
|
31
|
+
string :name
|
32
|
+
json :stuff
|
33
|
+
|
34
|
+
end.new name: 'abcd', stuff: Hash[a: 1, b: 2, v: {}]
|
35
|
+
|
36
|
+
record.save!
|
37
|
+
assert !record.stuff_changed?
|
38
|
+
|
39
|
+
record.stuff[:v][:data] = 69
|
40
|
+
record.stuff[:v] = record.stuff[:v]
|
41
|
+
|
42
|
+
assert record.stuff_changed?
|
43
|
+
assert_equal Hash[a: 1, b: 2, v: Hash[data: 69]], record.stuff
|
44
|
+
end
|
45
|
+
|
46
|
+
test 'hash no change does not dirty' do
|
47
|
+
record = temp_object do
|
48
|
+
string :name
|
49
|
+
json :stuff
|
50
|
+
|
51
|
+
end.new name: 'abcd', stuff: Hash[a: 1, b: 2, v: {data: 69}]
|
52
|
+
|
53
|
+
record.save!
|
54
|
+
assert !record.stuff_changed?
|
55
|
+
|
56
|
+
record.stuff[:v][:data] = 69
|
57
|
+
record.stuff[:v] = record.stuff[:v]
|
58
|
+
|
59
|
+
assert !record.stuff_changed?
|
60
|
+
assert_equal Hash[a: 1, b: 2, v: Hash[data: 69]], record.stuff
|
61
|
+
end
|
62
|
+
|
63
|
+
test 'delete marks dirty' do
|
64
|
+
record = temp_object do
|
65
|
+
string :name
|
66
|
+
json :stuff
|
67
|
+
|
68
|
+
end.new name: 'abcd', stuff: Hash[a: 1, b: 2]
|
69
|
+
|
70
|
+
record.stuff.delete :b
|
71
|
+
|
72
|
+
assert record.stuff_changed?
|
73
|
+
assert_equal Hash[a: 1], record.stuff
|
74
|
+
end
|
75
|
+
|
76
|
+
|
12
77
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gotime-cassandra_object
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.10.
|
4
|
+
version: 4.10.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Koziarski
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-10-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activemodel
|
@@ -187,7 +187,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
187
187
|
version: 1.3.5
|
188
188
|
requirements: []
|
189
189
|
rubyforge_project:
|
190
|
-
rubygems_version: 2.0.
|
190
|
+
rubygems_version: 2.0.3
|
191
191
|
signing_key:
|
192
192
|
specification_version: 4
|
193
193
|
summary: Cassandra ActiveModel
|