sessionm-cassandra_object 2.5.0 → 2.5.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.
- data/lib/cassandra_object/associations.rb +3 -1
- data/lib/cassandra_object/associations/one_to_many.rb +3 -1
- data/lib/cassandra_object/associations/one_to_one.rb +12 -6
- data/lib/cassandra_object/cursor.rb +13 -6
- data/lib/cassandra_object/finder_methods.rb +32 -14
- data/lib/cassandra_object/persistence.rb +20 -8
- data/sessionm-cassandra_object.gemspec +1 -1
- metadata +1 -1
@@ -39,7 +39,9 @@ module CassandraObject
|
|
39
39
|
def remove(key)
|
40
40
|
begin
|
41
41
|
ActiveSupport::Notifications.instrument("remove.cassandra_object", column_family: relationships_column_family, key: key) do
|
42
|
-
|
42
|
+
CassandraObject::Base.with_connection do
|
43
|
+
connection.remove(relationships_column_family, key.to_s, consistency: thrift_write_consistency)
|
44
|
+
end
|
43
45
|
end
|
44
46
|
rescue Cassandra::AccessError => e
|
45
47
|
raise e unless e.message =~ /Invalid column family/
|
@@ -20,7 +20,9 @@ module CassandraObject
|
|
20
20
|
key = owner.key
|
21
21
|
attributes = {@association_name=>{new_key=>record.key.to_s}}
|
22
22
|
ActiveSupport::Notifications.instrument("insert.cassandra_object", :column_family => column_family, :key => key, :attributes => attributes) do
|
23
|
-
|
23
|
+
CassandraObject::Base.with_connection do
|
24
|
+
connection.insert(column_family, key.to_s, attributes, :consistency => @owner_class.thrift_write_consistency)
|
25
|
+
end
|
24
26
|
end
|
25
27
|
if has_inverse? && set_inverse
|
26
28
|
inverse.set_inverse(record, owner)
|
@@ -25,15 +25,19 @@ module CassandraObject
|
|
25
25
|
|
26
26
|
def clear(owner)
|
27
27
|
ActiveSupport::Notifications.instrument("remove.cassandra_object", :column_family => column_family, :key => owner.key, :columns => @association_name) do
|
28
|
-
|
28
|
+
CassandraObject::Base.with_connection do
|
29
|
+
connection.remove(column_family, owner.key.to_s, @association_name)
|
30
|
+
end
|
29
31
|
end
|
30
32
|
end
|
31
33
|
|
32
34
|
def find(owner)
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
CassandraObject::Base.with_connection do
|
36
|
+
if key = connection.get(column_family, owner.key.to_s, @association_name.to_s, :count=>1).values.first
|
37
|
+
target_class.get(key)
|
38
|
+
else
|
39
|
+
nil
|
40
|
+
end
|
37
41
|
end
|
38
42
|
end
|
39
43
|
|
@@ -42,7 +46,9 @@ module CassandraObject
|
|
42
46
|
key = owner.key
|
43
47
|
attributes = {@association_name=>{new_key=>record.key.to_s}}
|
44
48
|
ActiveSupport::Notifications.instrument("insert.cassandra_object", :column_family => column_family, :key => key, :attributes => attributes) do
|
45
|
-
|
49
|
+
CassandraObject::Base.with_connection do
|
50
|
+
connection.insert(column_family, key.to_s, attributes, :consistency => @owner_class.thrift_write_consistency)
|
51
|
+
end
|
46
52
|
end
|
47
53
|
if has_inverse? && set_inverse
|
48
54
|
inverse.set_inverse(record, owner)
|
@@ -23,11 +23,16 @@ module CassandraObject
|
|
23
23
|
end
|
24
24
|
|
25
25
|
while objects.size < number_to_find && !out_of_keys
|
26
|
-
index_results =
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
26
|
+
index_results =
|
27
|
+
begin
|
28
|
+
CassandraObject::Base.with_connection do
|
29
|
+
connection.get(@column_family, @key, @super_column,
|
30
|
+
count: limit,
|
31
|
+
start: start_with,
|
32
|
+
reversed: @options[:reversed],
|
33
|
+
consistency: target_class.thrift_read_consistency)
|
34
|
+
end
|
35
|
+
end
|
31
36
|
|
32
37
|
out_of_keys = index_results.size < limit
|
33
38
|
|
@@ -80,7 +85,9 @@ module CassandraObject
|
|
80
85
|
end
|
81
86
|
|
82
87
|
def remove(index_key)
|
83
|
-
|
88
|
+
CassandraObject::Base.with_connection do
|
89
|
+
connection.remove(@column_family, @key, @super_column, index_key, consistency: target_class.thrift_write_consistency)
|
90
|
+
end
|
84
91
|
end
|
85
92
|
|
86
93
|
def validator(&validator)
|
@@ -9,8 +9,16 @@ module CassandraObject
|
|
9
9
|
raise(ArgumentError, "unexpected conditions") if opts[:conditions].present?
|
10
10
|
raise(CassandraObject::InvalidKey, "invalid key: #{key}") if key.blank? || ! parse_key(key)
|
11
11
|
|
12
|
-
|
13
|
-
|
12
|
+
attributes =
|
13
|
+
begin
|
14
|
+
ActiveSupport::Notifications.instrument("get.cassandra_object", column_family: column_family, key: key) do
|
15
|
+
CassandraObject::Base.with_connection do
|
16
|
+
connection.get column_family, key, opts.slice(:consistency)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
if attributes && ! attributes.empty?
|
14
22
|
instantiate(key, attributes)
|
15
23
|
else
|
16
24
|
raise CassandraObject::RecordNotFound
|
@@ -28,7 +36,9 @@ module CassandraObject
|
|
28
36
|
opts[:consistency] ||= thrift_read_consistency
|
29
37
|
|
30
38
|
result = ActiveSupport::Notifications.instrument("get_counter.cassandra_object", column_family: column_family, key: key, column: column) do
|
31
|
-
|
39
|
+
CassandraObject::Base.with_connection do
|
40
|
+
connection.get(column_family, key, column, opts)
|
41
|
+
end
|
32
42
|
end
|
33
43
|
|
34
44
|
if result
|
@@ -41,7 +51,9 @@ module CassandraObject
|
|
41
51
|
def all(options = {})
|
42
52
|
limit = options[:limit] || 100
|
43
53
|
results = ActiveSupport::Notifications.instrument("get_range.cassandra_object", column_family: column_family, key_count: limit) do
|
44
|
-
|
54
|
+
CassandraObject::Base.with_connection do
|
55
|
+
connection.get_range(column_family, key_count: limit, consistency: thrift_read_consistency)
|
56
|
+
end
|
45
57
|
end
|
46
58
|
|
47
59
|
results.map do |k, v|
|
@@ -76,13 +88,15 @@ module CassandraObject
|
|
76
88
|
|
77
89
|
# Selecting a slice of a super column
|
78
90
|
def get_slice(key, start, finish, opts={})
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
91
|
+
CassandraObject::Base.with_connection do
|
92
|
+
connection.get_slice(column_family,
|
93
|
+
key,
|
94
|
+
start,
|
95
|
+
finish,
|
96
|
+
opts[:count] || 100,
|
97
|
+
opts[:reversed] || false,
|
98
|
+
opts[:consistency] || thrift_read_consistency)
|
99
|
+
end
|
86
100
|
end
|
87
101
|
|
88
102
|
private
|
@@ -105,7 +119,9 @@ module CassandraObject
|
|
105
119
|
|
106
120
|
def multi_get(keys, options={})
|
107
121
|
attribute_results = ActiveSupport::Notifications.instrument("multi_get.cassandra_object", column_family: column_family, keys: keys) do
|
108
|
-
|
122
|
+
CassandraObject::Base.with_connection do
|
123
|
+
connection.multi_get(column_family, keys.map(&:to_s), consistency: thrift_read_consistency)
|
124
|
+
end
|
109
125
|
end
|
110
126
|
|
111
127
|
instantiate_many(attribute_results)
|
@@ -115,8 +131,10 @@ module CassandraObject
|
|
115
131
|
options = options.reverse_merge(:consistency => thrift_read_consistency)
|
116
132
|
|
117
133
|
attribute_results = ActiveSupport::Notifications.instrument("multi_get_by_expression.cassandra_object", column_family: column_family, expression: expression) do
|
118
|
-
|
119
|
-
|
134
|
+
CassandraObject::Base.with_connection do
|
135
|
+
intermediate_results = connection.get_indexed_slices(column_family, expression, options)
|
136
|
+
connection.send(:multi_columns_to_hash!, column_family, intermediate_results)
|
137
|
+
end
|
120
138
|
end
|
121
139
|
|
122
140
|
instantiate_many(attribute_results)
|
@@ -4,12 +4,14 @@ module CassandraObject
|
|
4
4
|
|
5
5
|
module ClassMethods
|
6
6
|
def add(key, value, *columns_and_options)
|
7
|
-
column_family, column, sub_column, options = connection.extract_and_validate_params(self.column_family, key, columns_and_options, {})
|
7
|
+
column_family, column, sub_column, options = CassandraObject::Base.with_connection { connection.extract_and_validate_params(self.column_family, key, columns_and_options, {}) }
|
8
8
|
# the options are removed, leaving just columns
|
9
9
|
columns = columns_and_options
|
10
10
|
|
11
11
|
ActiveSupport::Notifications.instrument("add.cassandra_object", column_family: column_family, key: key, column: column, sub_column: sub_column, value: value) do
|
12
|
-
|
12
|
+
CassandraObject::Base.with_connection do
|
13
|
+
connection.add(column_family, key, value, *columns, :consistency => thrift_write_consistency)
|
14
|
+
end
|
13
15
|
end
|
14
16
|
end
|
15
17
|
|
@@ -27,13 +29,17 @@ module CassandraObject
|
|
27
29
|
value_spec = values.length == 1 ? values[0] : '<various>'
|
28
30
|
|
29
31
|
ActiveSupport::Notifications.instrument("add.cassandra_object", column_family: column_family, key: key, column: column_spec, value: value_spec) do
|
30
|
-
|
32
|
+
CassandraObject::Base.with_connection do
|
33
|
+
connection.add_multiple_columns(column_family, key, hash, :consistency => thrift_write_consistency)
|
34
|
+
end
|
31
35
|
end
|
32
36
|
end
|
33
37
|
|
34
38
|
def remove(key)
|
35
|
-
ActiveSupport::Notifications.instrument("remove.cassandra_object", column_family: column_family, key: key) do
|
36
|
-
|
39
|
+
ActiveSupport::Notifications.instrument("remove.cassandra_object", column_family: column_family, key: key) do
|
40
|
+
CassandraObject::Base.with_connection do
|
41
|
+
connection.remove(column_family, key.to_s, consistency: thrift_write_consistency)
|
42
|
+
end
|
37
43
|
end
|
38
44
|
end
|
39
45
|
|
@@ -42,13 +48,17 @@ module CassandraObject
|
|
42
48
|
def remove_counter(key)
|
43
49
|
ActiveSupport::Notifications.instrument("remove.cassandra_object", column_family: column_family, key: key) do
|
44
50
|
parent = CassandraThrift::ColumnParent.new(:column_family => column_family)
|
45
|
-
|
51
|
+
CassandraObject::Base.with_connection do
|
52
|
+
connection.send(:client).remove_counter(key, parent, thrift_write_consistency)
|
53
|
+
end
|
46
54
|
end
|
47
55
|
end
|
48
56
|
|
49
57
|
def delete_all
|
50
58
|
ActiveSupport::Notifications.instrument("truncate.cassandra_object", column_family: column_family) do
|
51
|
-
|
59
|
+
CassandraObject::Base.with_connection do
|
60
|
+
connection.truncate!(column_family)
|
61
|
+
end
|
52
62
|
end
|
53
63
|
end
|
54
64
|
|
@@ -68,7 +78,9 @@ module CassandraObject
|
|
68
78
|
options[:consistency] = thrift_write_consistency
|
69
79
|
options[:ttl] = row_ttl unless row_ttl.nil?
|
70
80
|
end
|
71
|
-
|
81
|
+
CassandraObject::Base.with_connection do
|
82
|
+
connection.insert(column_family, key.to_s, attributes, options)
|
83
|
+
end
|
72
84
|
end
|
73
85
|
end
|
74
86
|
end
|