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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/lib/cequel.rb +1 -1
  3. data/lib/cequel/record.rb +62 -0
  4. data/lib/cequel/{model → record}/association_collection.rb +1 -1
  5. data/lib/cequel/{model → record}/associations.rb +1 -1
  6. data/lib/cequel/{model → record}/belongs_to_association.rb +1 -1
  7. data/lib/cequel/{model → record}/callbacks.rb +1 -1
  8. data/lib/cequel/{model → record}/collection.rb +1 -1
  9. data/lib/cequel/{model → record}/dirty.rb +1 -1
  10. data/lib/cequel/{model → record}/errors.rb +1 -1
  11. data/lib/cequel/{model → record}/has_many_association.rb +1 -1
  12. data/lib/cequel/{model → record}/mass_assignment.rb +1 -1
  13. data/lib/cequel/{model → record}/persistence.rb +11 -11
  14. data/lib/cequel/{model → record}/properties.rb +69 -15
  15. data/lib/cequel/{model → record}/railtie.rb +3 -3
  16. data/lib/cequel/{model → record}/record_set.rb +67 -57
  17. data/lib/cequel/record/schema.rb +76 -0
  18. data/lib/cequel/record/scoped.rb +53 -0
  19. data/lib/cequel/{model → record}/secondary_indexes.rb +1 -1
  20. data/lib/cequel/{model → record}/validations.rb +1 -1
  21. data/lib/cequel/schema/table.rb +18 -9
  22. data/lib/cequel/version.rb +1 -1
  23. data/spec/examples/{model → record}/associations_spec.rb +8 -8
  24. data/spec/examples/{model → record}/callbacks_spec.rb +1 -1
  25. data/spec/examples/{model → record}/dirty_spec.rb +1 -1
  26. data/spec/examples/{model → record}/list_spec.rb +1 -1
  27. data/spec/examples/{model → record}/map_spec.rb +1 -1
  28. data/spec/examples/{model → record}/mass_assignment_spec.rb +1 -1
  29. data/spec/examples/{model → record}/naming_spec.rb +0 -0
  30. data/spec/examples/{model → record}/persistence_spec.rb +1 -1
  31. data/spec/examples/{model → record}/properties_spec.rb +25 -2
  32. data/spec/examples/{model → record}/record_set_spec.rb +28 -7
  33. data/spec/examples/{model → record}/schema_spec.rb +3 -2
  34. data/spec/examples/record/scoped_spec.rb +13 -0
  35. data/spec/examples/{model → record}/secondary_index_spec.rb +1 -1
  36. data/spec/examples/{model → record}/serialization_spec.rb +1 -1
  37. data/spec/examples/{model → record}/set_spec.rb +1 -1
  38. data/spec/examples/{model → record}/spec_helper.rb +0 -0
  39. data/spec/examples/{model → record}/validations_spec.rb +4 -4
  40. data/spec/examples/spec_helper.rb +2 -2
  41. data/spec/support/helpers.rb +2 -1
  42. metadata +54 -64
  43. data/lib/cequel/model.rb +0 -30
  44. data/lib/cequel/model/base.rb +0 -84
  45. data/lib/cequel/model/schema.rb +0 -34
  46. data/lib/cequel/model/scoped.rb +0 -19
  47. data/spec/models/asset.rb +0 -21
  48. data/spec/models/asset_observer.rb +0 -5
  49. data/spec/models/blog.rb +0 -14
  50. data/spec/models/blog_posts.rb +0 -6
  51. data/spec/models/category.rb +0 -9
  52. data/spec/models/comment.rb +0 -12
  53. data/spec/models/comment_counts.rb +0 -8
  54. data/spec/models/photo.rb +0 -5
  55. data/spec/models/post.rb +0 -88
  56. data/spec/models/post_comments.rb +0 -14
  57. 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::Model::Schema do
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(Cequel::Model::Base) do
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
@@ -1,6 +1,6 @@
1
1
  require_relative 'spec_helper'
2
2
 
3
- describe Cequel::Model::SecondaryIndexes do
3
+ describe Cequel::Record::SecondaryIndexes do
4
4
  model :Post do
5
5
  key :blog_subdomain, :text
6
6
  key :permalink, :text
@@ -3,7 +3,7 @@ require_relative 'spec_helper'
3
3
  describe 'serialization' do
4
4
  model :Post do
5
5
  key :blog_subdomain, :text
6
- key :id, :uuid
6
+ key :id, :uuid, auto: true
7
7
  column :title, :text
8
8
  column :body, :text
9
9
  end
@@ -1,6 +1,6 @@
1
1
  require File.expand_path('../spec_helper', __FILE__)
2
2
 
3
- describe Cequel::Model::Set do
3
+ describe Cequel::Record::Set do
4
4
  model :Post do
5
5
  key :permalink, :text
6
6
  column :title, :text
@@ -1,6 +1,6 @@
1
1
  require_relative 'spec_helper'
2
2
 
3
- describe Cequel::Model::Validations do
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::Model::RecordInvalid)
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::Model::RecordInvalid)
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::Model::RecordInvalid)
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/model'
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::Model::Base.connection = cequel
30
+ Cequel::Record.connection = cequel
31
31
  end
32
32
 
33
33
  config.after(:all) do
@@ -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(Cequel::Base) do
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.2
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-21 00:00:00.000000000 Z
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/model/associations_spec.rb
190
- - spec/examples/model/callbacks_spec.rb
191
- - spec/examples/model/dirty_spec.rb
192
- - spec/examples/model/list_spec.rb
193
- - spec/examples/model/map_spec.rb
194
- - spec/examples/model/mass_assignment_spec.rb
195
- - spec/examples/model/naming_spec.rb
196
- - spec/examples/model/persistence_spec.rb
197
- - spec/examples/model/properties_spec.rb
198
- - spec/examples/model/record_set_spec.rb
199
- - spec/examples/model/schema_spec.rb
200
- - spec/examples/model/secondary_index_spec.rb
201
- - spec/examples/model/serialization_spec.rb
202
- - spec/examples/model/set_spec.rb
203
- - spec/examples/model/spec_helper.rb
204
- - spec/examples/model/validations_spec.rb
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/model/associations_spec.rb
253
- - spec/examples/model/callbacks_spec.rb
254
- - spec/examples/model/dirty_spec.rb
255
- - spec/examples/model/list_spec.rb
256
- - spec/examples/model/map_spec.rb
257
- - spec/examples/model/mass_assignment_spec.rb
258
- - spec/examples/model/naming_spec.rb
259
- - spec/examples/model/persistence_spec.rb
260
- - spec/examples/model/properties_spec.rb
261
- - spec/examples/model/record_set_spec.rb
262
- - spec/examples/model/schema_spec.rb
263
- - spec/examples/model/secondary_index_spec.rb
264
- - spec/examples/model/serialization_spec.rb
265
- - spec/examples/model/set_spec.rb
266
- - spec/examples/model/spec_helper.rb
267
- - spec/examples/model/validations_spec.rb
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
@@ -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
@@ -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
@@ -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
@@ -1,19 +0,0 @@
1
- module Cequel
2
-
3
- module Model
4
-
5
- module Scoped
6
-
7
- extend Forwardable
8
-
9
- def_delegators :current_scope, *RecordSet.instance_methods(false)
10
-
11
- def current_scope
12
- RecordSet.create(self)
13
- end
14
-
15
- end
16
-
17
- end
18
-
19
- end