gotime-cassandra_object 2.6.0 → 2.6.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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'gotime-cassandra_object'
5
- s.version = '2.6.0'
5
+ s.version = '2.6.1'
6
6
  s.description = 'Cassandra ActiveModel'
7
7
  s.summary = 'Cassandra ActiveModel'
8
8
 
@@ -59,6 +59,10 @@ module CassandraObject
59
59
  model_attributes[name] = Attribute.new(name, type_mapping, options)
60
60
  end
61
61
 
62
+ def json(name)
63
+ attribute(name, type: :hash)
64
+ end
65
+
62
66
  def instantiate_attribute(record, name, value)
63
67
  if model_attribute = model_attributes[name]
64
68
  model_attribute.instantiate(record, value)
@@ -31,36 +31,6 @@ module CassandraObject
31
31
  self.current_schema_version = version
32
32
  end
33
33
  end
34
-
35
- def instantiate(key, attributes)
36
- version = attributes.delete('schema_version')
37
- original_attributes = attributes.dup
38
- if version == current_schema_version
39
- return super(key, attributes)
40
- end
41
-
42
- versions_to_migrate = ((version.to_i + 1)..current_schema_version)
43
-
44
- migrations_to_run = versions_to_migrate.map do |v|
45
- migrations.find {|m| m.version == v}
46
- end
47
-
48
- if migrations_to_run.any?(&:nil?)
49
- raise MigrationNotFoundError.new(version, migrations)
50
- end
51
-
52
- migrations_to_run.inject(attributes) do |attrs, migration|
53
- migration.run(attrs)
54
- @schema_version = migration.version.to_s
55
- attrs
56
- end
57
-
58
- super(key, attributes).tap do |record|
59
- original_attributes.diff(attributes).keys.each do |attribute|
60
- record.send :attribute_will_change!, attribute
61
- end
62
- end
63
- end
64
34
  end
65
35
  end
66
36
  end
@@ -32,7 +32,7 @@ module CassandraObject
32
32
 
33
33
  def instantiate(key, attributes)
34
34
  # remove any attributes we don't know about. we would do this earlier, but we want to make such
35
- # attributes available to migrations
35
+ # attributes available to migrations
36
36
  attributes.delete_if { |k,_| model_attributes[k].nil? }
37
37
 
38
38
  allocate.tap do |object|
@@ -57,10 +57,6 @@ module CassandraObject
57
57
  def decode_columns_hash(object, attributes)
58
58
  Hash[attributes.map { |k, v| [k.to_s, instantiate_attribute(object, k, v)] }]
59
59
  end
60
-
61
- def column_family_configuration
62
- [{:Name => column_family, :CompareWith => "UTF8Type"}]
63
- end
64
60
  end
65
61
 
66
62
  def new_record?
@@ -8,9 +8,12 @@ class CassandraObject::AttributesTest < CassandraObject::TestCase
8
8
  end
9
9
 
10
10
  class TestIssue < CassandraObject::Base
11
- self.column_family = 'Issue'
11
+ key :uuid
12
+ self.column_family = 'Issues'
13
+
12
14
  attribute :custom_column, type: CustomType, coder: CustomCoder
13
15
  integer :price
16
+ json :orders
14
17
  end
15
18
 
16
19
  class TestChildIssue < TestIssue
@@ -24,6 +27,14 @@ class CassandraObject::AttributesTest < CassandraObject::TestCase
24
27
  assert_equal CustomType, model_attribute.expected_type
25
28
  end
26
29
 
30
+ test 'json attribute' do
31
+ issue = TestIssue.create! orders: {'a' => 'b'}
32
+
33
+ issue = TestIssue.find issue.id
34
+
35
+ assert_equal({'a' => 'b'}, issue.orders)
36
+ end
37
+
27
38
  test 'instantiate_attribute' do
28
39
  assert_equal 1, TestIssue.instantiate_attribute(TestIssue.new, 'price', 1)
29
40
  assert_equal 1, TestIssue.instantiate_attribute(TestIssue.new, :price, 1)
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: 2.6.0
4
+ version: 2.6.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ date: 2011-08-29 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel
17
- requirement: &70153564769440 !ruby/object:Gem::Requirement
17
+ requirement: &70147973264920 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '3.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70153564769440
25
+ version_requirements: *70147973264920
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: cassandra
28
- requirement: &70153564768800 !ruby/object:Gem::Requirement
28
+ requirement: &70147973264260 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 0.12.0
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70153564768800
36
+ version_requirements: *70147973264260
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: bundler
39
- requirement: &70153564768060 !ruby/object:Gem::Requirement
39
+ requirement: &70147973263640 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,7 +44,7 @@ dependencies:
44
44
  version: 1.0.0
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *70153564768060
47
+ version_requirements: *70147973263640
48
48
  description: Cassandra ActiveModel
49
49
  email: gems@gotime.com
50
50
  executables: []