sessionm-cassandra_object 2.3.9 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.rvmrc +1 -0
- data/lib/cassandra_object/migrations.rb +2 -1
- data/lib/cassandra_object/persistence.rb +3 -1
- data/lib/cassandra_object/timestamps.rb +10 -5
- data/sessionm-cassandra_object.gemspec +1 -1
- data/test/README +1 -1
- data/test/attributes_test.rb +3 -1
- data/test/persistence_test.rb +11 -0
- data/test/test_helper.rb +19 -0
- data/test/timestamps_test.rb +8 -1
- metadata +3 -2
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm 1.9.3-p327@cassandra_object --create
|
@@ -19,7 +19,8 @@ module CassandraObject
|
|
19
19
|
|
20
20
|
module InstanceMethods
|
21
21
|
def schema_version
|
22
|
-
|
22
|
+
version = @schema_version || self.class.current_schema_version
|
23
|
+
version.nil? ? nil : Integer(version)
|
23
24
|
end
|
24
25
|
|
25
26
|
def attribute_will_change!(attribute)
|
@@ -95,7 +95,9 @@ module CassandraObject
|
|
95
95
|
# don't attempt to encode columns that are nil
|
96
96
|
memo[column_name.to_s] = value.nil? ? '' : model_attributes[column_name].converter.encode(value).force_encoding('ASCII-8BIT')
|
97
97
|
memo
|
98
|
-
end.
|
98
|
+
end.tap do |hash|
|
99
|
+
hash["schema_version"] = schema_version.to_s unless schema_version.nil?
|
100
|
+
end
|
99
101
|
end
|
100
102
|
|
101
103
|
def decode_columns_hash(attributes)
|
@@ -3,16 +3,21 @@ module CassandraObject
|
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
included do
|
6
|
-
|
7
|
-
attribute :updated_at, type: :time#_with_zone
|
6
|
+
# Derived classes must declare the :created_at and :updated_at attributes.
|
8
7
|
|
9
8
|
before_create do #|r|
|
10
|
-
|
11
|
-
|
9
|
+
if attribute_method?(:created_at)
|
10
|
+
self.created_at ||= Time.current
|
11
|
+
end
|
12
|
+
if attribute_method?(:updated_at)
|
13
|
+
self.updated_at ||= Time.current
|
14
|
+
end
|
12
15
|
end
|
13
16
|
|
14
17
|
before_update if: :changed? do #|r|
|
15
|
-
|
18
|
+
if attribute_method?(:updated_at)
|
19
|
+
self.updated_at = Time.current
|
20
|
+
end
|
16
21
|
end
|
17
22
|
end
|
18
23
|
end
|
data/test/README
CHANGED
data/test/attributes_test.rb
CHANGED
@@ -7,11 +7,13 @@ class CassandraObject::AttributesTest < CassandraObject::TestCase
|
|
7
7
|
end
|
8
8
|
|
9
9
|
class B < CassandraObject::Base
|
10
|
+
attribute :created_at, :type => :time
|
11
|
+
attribute :updated_at, :type => :time
|
10
12
|
attribute :b, :type => :integer
|
11
13
|
end
|
12
14
|
|
13
15
|
test 'model_attributes' do
|
14
|
-
assert_equal %W[
|
16
|
+
assert_equal %W[a], A.model_attributes.keys
|
15
17
|
assert_equal %W[created_at updated_at b], B.model_attributes.keys
|
16
18
|
end
|
17
19
|
|
data/test/persistence_test.rb
CHANGED
@@ -36,6 +36,17 @@ class CassandraObject::PersistenceTest < CassandraObject::TestCase
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
test 'save! without current schema version' do
|
40
|
+
begin
|
41
|
+
old_current_schema_version = Issue.current_schema_version
|
42
|
+
Issue.current_schema_version = nil
|
43
|
+
record = Issue.create!
|
44
|
+
assert_equal nil, record.connection.get(Issue.column_family, record.id, 'schema_version')
|
45
|
+
ensure
|
46
|
+
Issue.current_schema_version = old_current_schema_version
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
39
50
|
test 'destroy' do
|
40
51
|
issue = Issue.create
|
41
52
|
issue.destroy
|
data/test/test_helper.rb
CHANGED
@@ -7,6 +7,22 @@ require 'rails/test_help'
|
|
7
7
|
require 'mocha/setup'
|
8
8
|
|
9
9
|
class Issue < CassandraObject::Base
|
10
|
+
key :uuid
|
11
|
+
attribute :created_at, :type => :time
|
12
|
+
attribute :updated_at, :type => :time
|
13
|
+
attribute :description, :type => :string
|
14
|
+
attribute :worth, :type => :decimal, :precision => 100
|
15
|
+
attribute :name, :type => :string
|
16
|
+
before_validation :set_defaults, :on => :create
|
17
|
+
|
18
|
+
def set_defaults
|
19
|
+
self.name ||= 'default name'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class IssueWithoutTimestamps < CassandraObject::Base
|
24
|
+
self.column_family = 'Issues'
|
25
|
+
|
10
26
|
key :uuid
|
11
27
|
attribute :description, :type => :string
|
12
28
|
attribute :worth, :type => :decimal, :precision => 100
|
@@ -19,6 +35,9 @@ class Issue < CassandraObject::Base
|
|
19
35
|
end
|
20
36
|
|
21
37
|
class Counter < CassandraObject::Base
|
38
|
+
attribute :created_at, :type => :time
|
39
|
+
attribute :updated_at, :type => :time
|
40
|
+
|
22
41
|
self.write_consistency = :all
|
23
42
|
end
|
24
43
|
|
data/test/timestamps_test.rb
CHANGED
@@ -24,4 +24,11 @@ class CassandraObject::TimestampsTest < CassandraObject::TestCase
|
|
24
24
|
|
25
25
|
assert_equal time, issue.created_at
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
|
+
test 'without timestamps' do
|
29
|
+
record = IssueWithoutTimestamps.create!
|
30
|
+
assert_equal nil, IssueWithoutTimestamps.connection.get(IssueWithoutTimestamps.column_family, record.id, 'created_at')
|
31
|
+
assert_equal nil, IssueWithoutTimestamps.connection.get(IssueWithoutTimestamps.column_family, record.id, 'updated_at')
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sessionm-cassandra_object
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-04-
|
14
|
+
date: 2013-04-16 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rails
|
@@ -69,6 +69,7 @@ extra_rdoc_files:
|
|
69
69
|
- README.markdown
|
70
70
|
files:
|
71
71
|
- .gitignore
|
72
|
+
- .rvmrc
|
72
73
|
- CHANGELOG
|
73
74
|
- Gemfile
|
74
75
|
- LICENSE
|