cequel 1.0.0.pre.2 → 1.0.0.pre.3
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.rb +1 -1
- data/lib/cequel/record.rb +62 -0
- data/lib/cequel/{model → record}/association_collection.rb +1 -1
- data/lib/cequel/{model → record}/associations.rb +1 -1
- data/lib/cequel/{model → record}/belongs_to_association.rb +1 -1
- data/lib/cequel/{model → record}/callbacks.rb +1 -1
- data/lib/cequel/{model → record}/collection.rb +1 -1
- data/lib/cequel/{model → record}/dirty.rb +1 -1
- data/lib/cequel/{model → record}/errors.rb +1 -1
- data/lib/cequel/{model → record}/has_many_association.rb +1 -1
- data/lib/cequel/{model → record}/mass_assignment.rb +1 -1
- data/lib/cequel/{model → record}/persistence.rb +11 -11
- data/lib/cequel/{model → record}/properties.rb +69 -15
- data/lib/cequel/{model → record}/railtie.rb +3 -3
- data/lib/cequel/{model → record}/record_set.rb +67 -57
- data/lib/cequel/record/schema.rb +76 -0
- data/lib/cequel/record/scoped.rb +53 -0
- data/lib/cequel/{model → record}/secondary_indexes.rb +1 -1
- data/lib/cequel/{model → record}/validations.rb +1 -1
- data/lib/cequel/schema/table.rb +18 -9
- data/lib/cequel/version.rb +1 -1
- data/spec/examples/{model → record}/associations_spec.rb +8 -8
- data/spec/examples/{model → record}/callbacks_spec.rb +1 -1
- data/spec/examples/{model → record}/dirty_spec.rb +1 -1
- data/spec/examples/{model → record}/list_spec.rb +1 -1
- data/spec/examples/{model → record}/map_spec.rb +1 -1
- data/spec/examples/{model → record}/mass_assignment_spec.rb +1 -1
- data/spec/examples/{model → record}/naming_spec.rb +0 -0
- data/spec/examples/{model → record}/persistence_spec.rb +1 -1
- data/spec/examples/{model → record}/properties_spec.rb +25 -2
- data/spec/examples/{model → record}/record_set_spec.rb +28 -7
- data/spec/examples/{model → record}/schema_spec.rb +3 -2
- data/spec/examples/record/scoped_spec.rb +13 -0
- data/spec/examples/{model → record}/secondary_index_spec.rb +1 -1
- data/spec/examples/{model → record}/serialization_spec.rb +1 -1
- data/spec/examples/{model → record}/set_spec.rb +1 -1
- data/spec/examples/{model → record}/spec_helper.rb +0 -0
- data/spec/examples/{model → record}/validations_spec.rb +4 -4
- data/spec/examples/spec_helper.rb +2 -2
- data/spec/support/helpers.rb +2 -1
- metadata +54 -64
- data/lib/cequel/model.rb +0 -30
- data/lib/cequel/model/base.rb +0 -84
- data/lib/cequel/model/schema.rb +0 -34
- data/lib/cequel/model/scoped.rb +0 -19
- data/spec/models/asset.rb +0 -21
- data/spec/models/asset_observer.rb +0 -5
- data/spec/models/blog.rb +0 -14
- data/spec/models/blog_posts.rb +0 -6
- data/spec/models/category.rb +0 -9
- data/spec/models/comment.rb +0 -12
- data/spec/models/comment_counts.rb +0 -8
- data/spec/models/photo.rb +0 -5
- data/spec/models/post.rb +0 -88
- data/spec/models/post_comments.rb +0 -14
- data/spec/models/post_observer.rb +0 -43
@@ -1,11 +1,12 @@
|
|
1
1
|
require File.expand_path('../spec_helper', __FILE__)
|
2
2
|
|
3
|
-
describe Cequel::
|
3
|
+
describe Cequel::Record::Schema do
|
4
4
|
after { cequel.schema.drop_table(:posts) }
|
5
5
|
subject { cequel.schema.read_table(:posts) }
|
6
6
|
|
7
7
|
let(:model) do
|
8
|
-
Class.new
|
8
|
+
Class.new do
|
9
|
+
include Cequel::Record
|
9
10
|
self.table_name = 'posts'
|
10
11
|
|
11
12
|
key :permalink, :text
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative 'spec_helper'
|
2
|
+
|
3
|
+
describe Cequel::Record::Scoped do
|
4
|
+
model :Post do
|
5
|
+
key :blog_subdomain, :text
|
6
|
+
key :id, :uuid, auto: true
|
7
|
+
column :name, :text
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should use current scoped key values to populate new record' do
|
11
|
+
Post['bigdata'].new.blog_subdomain.should == 'bigdata'
|
12
|
+
end
|
13
|
+
end
|
File without changes
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require_relative 'spec_helper'
|
2
2
|
|
3
|
-
describe Cequel::
|
3
|
+
describe Cequel::Record::Validations do
|
4
4
|
model :Post do
|
5
5
|
key :permalink, :text
|
6
6
|
column :title, :text
|
@@ -55,7 +55,7 @@ describe Cequel::Model::Validations do
|
|
55
55
|
describe '#save!' do
|
56
56
|
it 'should raise error and not persist model if invalid' do
|
57
57
|
expect { invalid_post.save! }.
|
58
|
-
to raise_error(Cequel::
|
58
|
+
to raise_error(Cequel::Record::RecordInvalid)
|
59
59
|
end
|
60
60
|
|
61
61
|
it 'should persist model and return self if valid' do
|
@@ -67,7 +67,7 @@ describe Cequel::Model::Validations do
|
|
67
67
|
describe '#update_attributes!' do
|
68
68
|
it 'should raise error and not update data in the database' do
|
69
69
|
expect { invalid_post.update_attributes!(:body => 'My Post') }.
|
70
|
-
to raise_error(Cequel::
|
70
|
+
to raise_error(Cequel::Record::RecordInvalid)
|
71
71
|
end
|
72
72
|
|
73
73
|
it 'should return successfully and update data in the database if valid' do
|
@@ -80,7 +80,7 @@ describe Cequel::Model::Validations do
|
|
80
80
|
it 'should raise RecordInvalid and not persist model if invalid' do
|
81
81
|
expect do
|
82
82
|
Post.create!(:permalink => 'cequel', :body => 'Cequel')
|
83
|
-
end.to raise_error(Cequel::
|
83
|
+
end.to raise_error(Cequel::Record::RecordInvalid)
|
84
84
|
end
|
85
85
|
|
86
86
|
it 'should persist record to database if valid' do
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require File.expand_path('../../environment', __FILE__)
|
2
|
-
require 'cequel
|
2
|
+
require 'cequel'
|
3
3
|
|
4
4
|
Dir.glob(File.expand_path('../../support/**/*.rb', __FILE__)).each do |file|
|
5
5
|
require file
|
@@ -27,7 +27,7 @@ RSpec.configure do |config|
|
|
27
27
|
CREATE KEYSPACE #{keyspace}
|
28
28
|
WITH REPLICATION = {'class': 'SimpleStrategy', 'replication_factor': 1}
|
29
29
|
CQL
|
30
|
-
Cequel::
|
30
|
+
Cequel::Record.connection = cequel
|
31
31
|
end
|
32
32
|
|
33
33
|
config.after(:all) do
|
data/spec/support/helpers.rb
CHANGED
@@ -13,7 +13,8 @@ module Cequel
|
|
13
13
|
before :all do
|
14
14
|
metadata = self.class.metadata
|
15
15
|
metadata[:models].each do |name, (options, block)|
|
16
|
-
clazz = Class.new
|
16
|
+
clazz = Class.new do
|
17
|
+
include Cequel::Record
|
17
18
|
self.table_name = name.to_s.tableize
|
18
19
|
class_eval(&block)
|
19
20
|
end
|
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.0.pre.
|
4
|
+
version: 1.0.0.pre.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mat Brown
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-09-
|
14
|
+
date: 2013-09-26 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: activesupport
|
@@ -149,26 +149,25 @@ files:
|
|
149
149
|
- lib/cequel/metal/updater.rb
|
150
150
|
- lib/cequel/metal/writer.rb
|
151
151
|
- lib/cequel/metal.rb
|
152
|
-
- lib/cequel/model/association_collection.rb
|
153
|
-
- lib/cequel/model/associations.rb
|
154
|
-
- lib/cequel/model/base.rb
|
155
|
-
- lib/cequel/model/belongs_to_association.rb
|
156
|
-
- lib/cequel/model/callbacks.rb
|
157
|
-
- lib/cequel/model/collection.rb
|
158
|
-
- lib/cequel/model/dirty.rb
|
159
|
-
- lib/cequel/model/errors.rb
|
160
|
-
- lib/cequel/model/has_many_association.rb
|
161
|
-
- lib/cequel/model/mass_assignment.rb
|
162
|
-
- lib/cequel/model/persistence.rb
|
163
|
-
- lib/cequel/model/properties.rb
|
164
|
-
- lib/cequel/model/railtie.rb
|
165
|
-
- lib/cequel/model/record_set.rb
|
166
|
-
- lib/cequel/model/schema.rb
|
167
|
-
- lib/cequel/model/scoped.rb
|
168
|
-
- lib/cequel/model/secondary_indexes.rb
|
169
|
-
- lib/cequel/model/validations.rb
|
170
|
-
- lib/cequel/model.rb
|
171
152
|
- lib/cequel/new_relic_instrumentation.rb
|
153
|
+
- lib/cequel/record/association_collection.rb
|
154
|
+
- lib/cequel/record/associations.rb
|
155
|
+
- lib/cequel/record/belongs_to_association.rb
|
156
|
+
- lib/cequel/record/callbacks.rb
|
157
|
+
- lib/cequel/record/collection.rb
|
158
|
+
- lib/cequel/record/dirty.rb
|
159
|
+
- lib/cequel/record/errors.rb
|
160
|
+
- lib/cequel/record/has_many_association.rb
|
161
|
+
- lib/cequel/record/mass_assignment.rb
|
162
|
+
- lib/cequel/record/persistence.rb
|
163
|
+
- lib/cequel/record/properties.rb
|
164
|
+
- lib/cequel/record/railtie.rb
|
165
|
+
- lib/cequel/record/record_set.rb
|
166
|
+
- lib/cequel/record/schema.rb
|
167
|
+
- lib/cequel/record/scoped.rb
|
168
|
+
- lib/cequel/record/secondary_indexes.rb
|
169
|
+
- lib/cequel/record/validations.rb
|
170
|
+
- lib/cequel/record.rb
|
172
171
|
- lib/cequel/schema/column.rb
|
173
172
|
- lib/cequel/schema/create_table_dsl.rb
|
174
173
|
- lib/cequel/schema/keyspace.rb
|
@@ -186,39 +185,29 @@ files:
|
|
186
185
|
- lib/cequel.rb
|
187
186
|
- spec/environment.rb
|
188
187
|
- spec/examples/metal/data_set_spec.rb
|
189
|
-
- spec/examples/
|
190
|
-
- spec/examples/
|
191
|
-
- spec/examples/
|
192
|
-
- spec/examples/
|
193
|
-
- spec/examples/
|
194
|
-
- spec/examples/
|
195
|
-
- spec/examples/
|
196
|
-
- spec/examples/
|
197
|
-
- spec/examples/
|
198
|
-
- spec/examples/
|
199
|
-
- spec/examples/
|
200
|
-
- spec/examples/
|
201
|
-
- spec/examples/
|
202
|
-
- spec/examples/
|
203
|
-
- spec/examples/
|
204
|
-
- spec/examples/
|
188
|
+
- spec/examples/record/associations_spec.rb
|
189
|
+
- spec/examples/record/callbacks_spec.rb
|
190
|
+
- spec/examples/record/dirty_spec.rb
|
191
|
+
- spec/examples/record/list_spec.rb
|
192
|
+
- spec/examples/record/map_spec.rb
|
193
|
+
- spec/examples/record/mass_assignment_spec.rb
|
194
|
+
- spec/examples/record/naming_spec.rb
|
195
|
+
- spec/examples/record/persistence_spec.rb
|
196
|
+
- spec/examples/record/properties_spec.rb
|
197
|
+
- spec/examples/record/record_set_spec.rb
|
198
|
+
- spec/examples/record/schema_spec.rb
|
199
|
+
- spec/examples/record/scoped_spec.rb
|
200
|
+
- spec/examples/record/secondary_index_spec.rb
|
201
|
+
- spec/examples/record/serialization_spec.rb
|
202
|
+
- spec/examples/record/set_spec.rb
|
203
|
+
- spec/examples/record/spec_helper.rb
|
204
|
+
- spec/examples/record/validations_spec.rb
|
205
205
|
- spec/examples/schema/table_reader_spec.rb
|
206
206
|
- spec/examples/schema/table_synchronizer_spec.rb
|
207
207
|
- spec/examples/schema/table_updater_spec.rb
|
208
208
|
- spec/examples/schema/table_writer_spec.rb
|
209
209
|
- spec/examples/spec_helper.rb
|
210
210
|
- spec/examples/type_spec.rb
|
211
|
-
- spec/models/asset.rb
|
212
|
-
- spec/models/asset_observer.rb
|
213
|
-
- spec/models/blog.rb
|
214
|
-
- spec/models/blog_posts.rb
|
215
|
-
- spec/models/category.rb
|
216
|
-
- spec/models/comment.rb
|
217
|
-
- spec/models/comment_counts.rb
|
218
|
-
- spec/models/photo.rb
|
219
|
-
- spec/models/post.rb
|
220
|
-
- spec/models/post_comments.rb
|
221
|
-
- spec/models/post_observer.rb
|
222
211
|
- spec/shared/readable_dictionary.rb
|
223
212
|
- spec/support/helpers.rb
|
224
213
|
- spec/support/result_stub.rb
|
@@ -249,22 +238,23 @@ specification_version: 4
|
|
249
238
|
summary: Full-featured, ActiveModel-compliant ORM for Cassandra using CQL3
|
250
239
|
test_files:
|
251
240
|
- spec/examples/metal/data_set_spec.rb
|
252
|
-
- spec/examples/
|
253
|
-
- spec/examples/
|
254
|
-
- spec/examples/
|
255
|
-
- spec/examples/
|
256
|
-
- spec/examples/
|
257
|
-
- spec/examples/
|
258
|
-
- spec/examples/
|
259
|
-
- spec/examples/
|
260
|
-
- spec/examples/
|
261
|
-
- spec/examples/
|
262
|
-
- spec/examples/
|
263
|
-
- spec/examples/
|
264
|
-
- spec/examples/
|
265
|
-
- spec/examples/
|
266
|
-
- spec/examples/
|
267
|
-
- spec/examples/
|
241
|
+
- spec/examples/record/associations_spec.rb
|
242
|
+
- spec/examples/record/callbacks_spec.rb
|
243
|
+
- spec/examples/record/dirty_spec.rb
|
244
|
+
- spec/examples/record/list_spec.rb
|
245
|
+
- spec/examples/record/map_spec.rb
|
246
|
+
- spec/examples/record/mass_assignment_spec.rb
|
247
|
+
- spec/examples/record/naming_spec.rb
|
248
|
+
- spec/examples/record/persistence_spec.rb
|
249
|
+
- spec/examples/record/properties_spec.rb
|
250
|
+
- spec/examples/record/record_set_spec.rb
|
251
|
+
- spec/examples/record/schema_spec.rb
|
252
|
+
- spec/examples/record/scoped_spec.rb
|
253
|
+
- spec/examples/record/secondary_index_spec.rb
|
254
|
+
- spec/examples/record/serialization_spec.rb
|
255
|
+
- spec/examples/record/set_spec.rb
|
256
|
+
- spec/examples/record/spec_helper.rb
|
257
|
+
- spec/examples/record/validations_spec.rb
|
268
258
|
- spec/examples/schema/table_reader_spec.rb
|
269
259
|
- spec/examples/schema/table_synchronizer_spec.rb
|
270
260
|
- spec/examples/schema/table_updater_spec.rb
|
data/lib/cequel/model.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'active_model'
|
2
|
-
|
3
|
-
require 'cequel'
|
4
|
-
require 'cequel/model/errors'
|
5
|
-
require 'cequel/model/schema'
|
6
|
-
require 'cequel/model/properties'
|
7
|
-
require 'cequel/model/collection'
|
8
|
-
require 'cequel/model/persistence'
|
9
|
-
require 'cequel/model/record_set'
|
10
|
-
require 'cequel/model/scoped'
|
11
|
-
require 'cequel/model/secondary_indexes'
|
12
|
-
require 'cequel/model/associations'
|
13
|
-
require 'cequel/model/association_collection'
|
14
|
-
require 'cequel/model/belongs_to_association'
|
15
|
-
require 'cequel/model/has_many_association'
|
16
|
-
require 'cequel/model/mass_assignment'
|
17
|
-
require 'cequel/model/callbacks'
|
18
|
-
require 'cequel/model/validations'
|
19
|
-
require 'cequel/model/dirty'
|
20
|
-
|
21
|
-
require 'cequel/model/base'
|
22
|
-
|
23
|
-
if defined? Rails
|
24
|
-
require 'cequel/model/railtie'
|
25
|
-
end
|
26
|
-
|
27
|
-
module Cequel
|
28
|
-
module Model
|
29
|
-
end
|
30
|
-
end
|
data/lib/cequel/model/base.rb
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
module Cequel
|
2
|
-
|
3
|
-
module Model
|
4
|
-
|
5
|
-
class Base
|
6
|
-
|
7
|
-
include Cequel::Model::Properties
|
8
|
-
include Cequel::Model::Schema
|
9
|
-
include Cequel::Model::Persistence
|
10
|
-
include Cequel::Model::Associations
|
11
|
-
extend Cequel::Model::Scoped
|
12
|
-
extend Cequel::Model::SecondaryIndexes
|
13
|
-
include Cequel::Model::MassAssignment
|
14
|
-
include Cequel::Model::Callbacks
|
15
|
-
include Cequel::Model::Validations
|
16
|
-
include Cequel::Model::Dirty
|
17
|
-
extend ActiveModel::Naming
|
18
|
-
include ActiveModel::Serializers::JSON
|
19
|
-
include ActiveModel::Serializers::Xml
|
20
|
-
|
21
|
-
class_attribute :table_name, :connection, :default_attributes,
|
22
|
-
:instance_writer => false
|
23
|
-
|
24
|
-
def self.inherited(base)
|
25
|
-
base.table_name = base.name.tableize.to_sym unless base.name.nil?
|
26
|
-
base.default_attributes = {}
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.establish_connection(configuration)
|
30
|
-
self.connection = Cequel.connect(configuration)
|
31
|
-
end
|
32
|
-
|
33
|
-
class <<self; alias_method :new_empty, :new; end
|
34
|
-
def self.new(*args, &block)
|
35
|
-
new_empty.tap do |record|
|
36
|
-
record.__send__(:initialize_new_record, *args)
|
37
|
-
yield record if block_given?
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def initialize(&block)
|
42
|
-
@attributes, @collection_proxies = {}, {}
|
43
|
-
instance_eval(&block) if block
|
44
|
-
end
|
45
|
-
|
46
|
-
def ==(other)
|
47
|
-
if key_values.any? { |value| value.nil? }
|
48
|
-
super
|
49
|
-
else
|
50
|
-
self.class == other.class && key_values == other.key_values
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def inspect
|
55
|
-
inspected_attributes = attributes.each_pair.map do |attr, value|
|
56
|
-
inspected_value = value.is_a?(CassandraCQL::UUID) ?
|
57
|
-
value.to_guid :
|
58
|
-
value.inspect
|
59
|
-
"#{attr}: #{inspected_value}"
|
60
|
-
end
|
61
|
-
"#<#{self.class} #{inspected_attributes.join(", ")}>"
|
62
|
-
end
|
63
|
-
|
64
|
-
protected
|
65
|
-
attr_reader :collection_proxies
|
66
|
-
|
67
|
-
private
|
68
|
-
|
69
|
-
def initialize_new_record(attributes = {})
|
70
|
-
@attributes = Marshal.load(Marshal.dump(default_attributes))
|
71
|
-
@new_record = true
|
72
|
-
yield self if block_given?
|
73
|
-
self.attributes = attributes #XXX this should really be in Properties
|
74
|
-
loaded!
|
75
|
-
self
|
76
|
-
end
|
77
|
-
|
78
|
-
end
|
79
|
-
|
80
|
-
end
|
81
|
-
|
82
|
-
Base = Model::Base
|
83
|
-
|
84
|
-
end
|
data/lib/cequel/model/schema.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
module Cequel
|
2
|
-
|
3
|
-
module Model
|
4
|
-
|
5
|
-
module Schema
|
6
|
-
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
module ClassMethods
|
10
|
-
extend Forwardable
|
11
|
-
|
12
|
-
def_delegators :table_schema, :key_columns, :key_column_names,
|
13
|
-
:partition_key_columns, :clustering_columns
|
14
|
-
|
15
|
-
def synchronize_schema
|
16
|
-
Cequel::Schema::TableSynchronizer.
|
17
|
-
apply(connection, read_schema, table_schema)
|
18
|
-
end
|
19
|
-
|
20
|
-
def read_schema
|
21
|
-
connection.schema.read_table(table_name)
|
22
|
-
end
|
23
|
-
|
24
|
-
def table_schema
|
25
|
-
@table_schema ||= Cequel::Schema::Table.new(table_name)
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
data/lib/cequel/model/scoped.rb
DELETED