cequel 1.0.0 → 1.0.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 +4 -4
- data/lib/cequel/metal/updater.rb +25 -4
- data/lib/cequel/record/properties.rb +3 -0
- data/lib/cequel/record/schema.rb +1 -1
- data/lib/cequel/version.rb +1 -1
- data/spec/examples/metal/data_set_spec.rb +12 -0
- data/spec/examples/record/schema_spec.rb +22 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cbbbc8b19ddcc607473f72539c53fb5aaf00aa7e
|
4
|
+
data.tar.gz: b417bdbf6d4308074b1c83cc348cd8370913252e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7259fcb8ca0ce0ef51d8417b1060726c6de8579041a066dfaf676a43902bfe3d652e086eaf62552627f47579bef4314df04770a165cfd8af6ba4a43be64c277
|
7
|
+
data.tar.gz: f397e3c887fe4bfcecd4de9666b3b53885576a3cc192cdd3a6fb14ae3f432b55026bfd665ebb7f99f37034f6a255dfee39dcd8e764309e20d543b7cb57fd0034
|
data/lib/cequel/metal/updater.rb
CHANGED
@@ -12,6 +12,14 @@ module Cequel
|
|
12
12
|
# @since 1.0.0
|
13
13
|
#
|
14
14
|
class Updater < Writer
|
15
|
+
#
|
16
|
+
# @see Writer#initialize
|
17
|
+
#
|
18
|
+
def initialize(*)
|
19
|
+
@column_updates = {}
|
20
|
+
super
|
21
|
+
end
|
22
|
+
|
15
23
|
#
|
16
24
|
# Directly set column values
|
17
25
|
#
|
@@ -22,10 +30,7 @@ module Cequel
|
|
22
30
|
#
|
23
31
|
def set(data)
|
24
32
|
data.each_pair do |column, value|
|
25
|
-
|
26
|
-
statements << "#{column} = #{binding}"
|
27
|
-
bind_vars.concat(values)
|
28
|
-
end
|
33
|
+
column_updates[column.to_sym] = value
|
29
34
|
end
|
30
35
|
end
|
31
36
|
|
@@ -131,12 +136,28 @@ module Cequel
|
|
131
136
|
|
132
137
|
private
|
133
138
|
|
139
|
+
attr_reader :column_updates
|
140
|
+
|
141
|
+
def empty?
|
142
|
+
super && column_updates.empty?
|
143
|
+
end
|
144
|
+
|
134
145
|
def write_to_statement(statement)
|
146
|
+
prepare_column_updates
|
135
147
|
statement.append("UPDATE #{table_name}")
|
136
148
|
.append(generate_upsert_options)
|
137
149
|
.append(" SET ")
|
138
150
|
.append(statements.join(', '), *bind_vars)
|
139
151
|
end
|
152
|
+
|
153
|
+
def prepare_column_updates
|
154
|
+
column_updates.each_pair do |column, value|
|
155
|
+
prepare_upsert_value(value) do |binding, *values|
|
156
|
+
statements << "#{column} = #{binding}"
|
157
|
+
bind_vars.concat(values)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
140
161
|
end
|
141
162
|
end
|
142
163
|
end
|
@@ -82,6 +82,9 @@ module Cequel
|
|
82
82
|
# @option options [Boolean] :auto (false) automatically initialize this
|
83
83
|
# key with a UUID value for new records. Only valid for `uuid` and
|
84
84
|
# `timeuuid` columns.
|
85
|
+
# @option options [:asc,:desc] :order whether rows should be ordered
|
86
|
+
# ascending or descending by this column. Only valid for clustering
|
87
|
+
# columns
|
85
88
|
# @return [void]
|
86
89
|
#
|
87
90
|
# @note {Associations::ClassMethods#belongs_to belongs_to} implicitly
|
data/lib/cequel/record/schema.rb
CHANGED
data/lib/cequel/version.rb
CHANGED
@@ -152,6 +152,18 @@ describe Cequel::Metal::DataSet do
|
|
152
152
|
cequel[:posts].where(row_keys).first[:categories].
|
153
153
|
should == %w(Scalability Fault-Tolerance)
|
154
154
|
end
|
155
|
+
|
156
|
+
it 'should use the last value set for a given column' do
|
157
|
+
cequel[:posts].insert(
|
158
|
+
row_keys.merge(title: 'Big Data',
|
159
|
+
body: 'Cassandra',
|
160
|
+
categories: ['Scalability']))
|
161
|
+
cequel[:posts].where(row_keys).update do
|
162
|
+
set(title: 'Bigger Data')
|
163
|
+
set(title: 'Even Bigger Data')
|
164
|
+
end
|
165
|
+
cequel[:posts].where(row_keys).first[:title].should == 'Even Bigger Data'
|
166
|
+
end
|
155
167
|
end
|
156
168
|
|
157
169
|
describe '#list_prepend' do
|
@@ -45,6 +45,28 @@ describe Cequel::Record::Schema do
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
+
context 'CQL3 table with reversed clustering column' do
|
49
|
+
|
50
|
+
let(:model) do
|
51
|
+
Class.new do
|
52
|
+
include Cequel::Record
|
53
|
+
self.table_name = 'posts'
|
54
|
+
|
55
|
+
key :blog_id, :uuid
|
56
|
+
key :id, :timeuuid, order: :desc
|
57
|
+
column :title, :text
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
before { model.synchronize_schema }
|
62
|
+
after { cequel.schema.drop_table(:posts) }
|
63
|
+
subject { cequel.schema.read_table(:posts) }
|
64
|
+
|
65
|
+
it 'should order clustering column descending' do
|
66
|
+
subject.clustering_columns.first.clustering_order.should == :desc
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
48
70
|
context 'wide-row legacy table' do
|
49
71
|
let(:legacy_model) do
|
50
72
|
Class.new do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cequel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mat Brown
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2014-02-
|
15
|
+
date: 2014-02-09 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: activesupport
|