gotime-cassandra_object 2.1.0 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/gotime-cassandra_object.gemspec +1 -1
- data/lib/cassandra_object.rb +3 -1
- data/lib/cassandra_object/tasks/ks.rake +0 -2
- data/lib/cassandra_object/types.rb +2 -0
- data/lib/cassandra_object/types/array_type.rb +16 -0
- data/lib/cassandra_object/types/boolean_type.rb +1 -1
- data/lib/cassandra_object/types/date_type.rb +1 -1
- data/lib/cassandra_object/types/float_type.rb +1 -1
- data/lib/cassandra_object/types/hash_type.rb +1 -1
- data/lib/cassandra_object/types/integer_type.rb +1 -1
- data/lib/cassandra_object/types/set_type.rb +22 -0
- data/lib/cassandra_object/types/string_type.rb +1 -1
- data/lib/cassandra_object/types/time_type.rb +1 -1
- data/lib/cassandra_object/types/time_with_zone_type.rb +1 -1
- data/lib/cassandra_object/types/utf8_string_type.rb +1 -1
- data/test/types/array_type_test.rb +15 -0
- data/test/types/set_type_test.rb +17 -0
- metadata +13 -7
data/Gemfile.lock
CHANGED
data/lib/cassandra_object.rb
CHANGED
@@ -31,14 +31,16 @@ module CassandraObject
|
|
31
31
|
autoload :ColumnFamily
|
32
32
|
end
|
33
33
|
|
34
|
-
|
34
|
+
module Types
|
35
35
|
extend ActiveSupport::Autoload
|
36
36
|
|
37
|
+
autoload :ArrayType
|
37
38
|
autoload :BooleanType
|
38
39
|
autoload :DateType
|
39
40
|
autoload :FloatType
|
40
41
|
autoload :HashType
|
41
42
|
autoload :IntegerType
|
43
|
+
autoload :SetType
|
42
44
|
autoload :TimeType
|
43
45
|
autoload :TimeWithZoneType
|
44
46
|
autoload :UTF8StringType
|
@@ -1,5 +1,4 @@
|
|
1
1
|
namespace :ks do
|
2
|
-
|
3
2
|
task :configure => :environment do
|
4
3
|
@configs = YAML.load_file(Rails.root.join("config", "cassandra.yml"))
|
5
4
|
@config = @configs[Rails.env || 'development']
|
@@ -118,6 +117,5 @@ namespace :ks do
|
|
118
117
|
ks.set config['keyspace']
|
119
118
|
ks
|
120
119
|
end
|
121
|
-
|
122
120
|
end
|
123
121
|
|
@@ -1,8 +1,10 @@
|
|
1
|
+
CassandraObject::Type.register(:array, Array, CassandraObject::Types::ArrayType)
|
1
2
|
CassandraObject::Type.register(:boolean, Object, CassandraObject::Types::BooleanType)
|
2
3
|
CassandraObject::Type.register(:date, Date, CassandraObject::Types::DateType)
|
3
4
|
CassandraObject::Type.register(:float, Float, CassandraObject::Types::FloatType)
|
4
5
|
CassandraObject::Type.register(:hash, Hash, CassandraObject::Types::HashType)
|
5
6
|
CassandraObject::Type.register(:integer, Integer, CassandraObject::Types::IntegerType)
|
7
|
+
CassandraObject::Type.register(:set, Array, CassandraObject::Types::SetType)
|
6
8
|
CassandraObject::Type.register(:time, Time, CassandraObject::Types::TimeType)
|
7
9
|
CassandraObject::Type.register(:time_with_zone, ActiveSupport::TimeWithZone, CassandraObject::Types::TimeWithZoneType)
|
8
10
|
CassandraObject::Type.register(:string, String, CassandraObject::Types::UTF8StringType) #This could be changed to StringType to support non-utf8 strings
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module CassandraObject
|
2
|
+
module Types
|
3
|
+
module ArrayType
|
4
|
+
def encode(array)
|
5
|
+
raise ArgumentError.new("#{self} requires an Array") unless array.kind_of?(Array)
|
6
|
+
array.to_json
|
7
|
+
end
|
8
|
+
module_function :encode
|
9
|
+
|
10
|
+
def decode(str)
|
11
|
+
ActiveSupport::JSON.decode(str)
|
12
|
+
end
|
13
|
+
module_function :decode
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module CassandraObject
|
2
|
+
module Types
|
3
|
+
module SetType
|
4
|
+
def encode(set)
|
5
|
+
if set.kind_of?(Set)
|
6
|
+
set.to_json
|
7
|
+
elsif set.kind_of?(Array)
|
8
|
+
set.uniq.to_json
|
9
|
+
else
|
10
|
+
raise ArgumentError.new("#{self} requires an Array or Set")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
module_function :encode
|
14
|
+
|
15
|
+
def decode(str)
|
16
|
+
return str.to_a if str.kind_of?(Set)
|
17
|
+
ActiveSupport::JSON.decode(str)
|
18
|
+
end
|
19
|
+
module_function :decode
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class CassandraObject::Types::ArrayTypeTest < CassandraObject::TestCase
|
4
|
+
test 'encode' do
|
5
|
+
assert_equal ['1', '2'].to_json, CassandraObject::Types::ArrayType.encode(['1', '2'])
|
6
|
+
|
7
|
+
assert_raise ArgumentError do
|
8
|
+
CassandraObject::Types::ArrayType.encode('wtf')
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
test 'decode' do
|
13
|
+
assert_equal ['1', '2'], CassandraObject::Types::ArrayType.decode(['1', '2'].to_json)
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class CassandraObject::Types::SetTypeTest < CassandraObject::TestCase
|
4
|
+
test 'encode' do
|
5
|
+
assert_equal ['1', '2'].to_json, CassandraObject::Types::SetType.encode(['1', '2'].to_set)
|
6
|
+
assert_equal ['1', '2'].to_json, CassandraObject::Types::SetType.encode(['1', '2', '2'])
|
7
|
+
|
8
|
+
assert_raise ArgumentError do
|
9
|
+
CassandraObject::Types::SetType.encode('wtf')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
test 'decode' do
|
14
|
+
assert_equal ['1', '2'], CassandraObject::Types::SetType.decode(['1', '2'].to_set)
|
15
|
+
assert_equal ['1', '2'], CassandraObject::Types::SetType.decode(['1', '2'].to_json)
|
16
|
+
end
|
17
|
+
end
|
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.1.
|
4
|
+
version: 2.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -14,7 +14,7 @@ date: 2011-07-25 00:00:00.000000000Z
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
17
|
-
requirement: &
|
17
|
+
requirement: &2152615720 !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: *
|
25
|
+
version_requirements: *2152615720
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: cassandra
|
28
|
-
requirement: &
|
28
|
+
requirement: &2152615260 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 0.11.3
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2152615260
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: bundler
|
39
|
-
requirement: &
|
39
|
+
requirement: &2152614800 !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: *
|
47
|
+
version_requirements: *2152614800
|
48
48
|
description: Cassandra ActiveModel
|
49
49
|
email: gems@gotime.com
|
50
50
|
executables: []
|
@@ -103,11 +103,13 @@ files:
|
|
103
103
|
- lib/cassandra_object/timestamps.rb
|
104
104
|
- lib/cassandra_object/type.rb
|
105
105
|
- lib/cassandra_object/types.rb
|
106
|
+
- lib/cassandra_object/types/array_type.rb
|
106
107
|
- lib/cassandra_object/types/boolean_type.rb
|
107
108
|
- lib/cassandra_object/types/date_type.rb
|
108
109
|
- lib/cassandra_object/types/float_type.rb
|
109
110
|
- lib/cassandra_object/types/hash_type.rb
|
110
111
|
- lib/cassandra_object/types/integer_type.rb
|
112
|
+
- lib/cassandra_object/types/set_type.rb
|
111
113
|
- lib/cassandra_object/types/string_type.rb
|
112
114
|
- lib/cassandra_object/types/time_type.rb
|
113
115
|
- lib/cassandra_object/types/time_with_zone_type.rb
|
@@ -143,11 +145,13 @@ files:
|
|
143
145
|
- test/persistence_test.rb
|
144
146
|
- test/test_helper.rb
|
145
147
|
- test/timestamps_test.rb
|
148
|
+
- test/types/array_type_test.rb
|
146
149
|
- test/types/boolean_type_test.rb
|
147
150
|
- test/types/date_type_test.rb
|
148
151
|
- test/types/float_type_test.rb
|
149
152
|
- test/types/hash_type_test.rb
|
150
153
|
- test/types/integer_type_test.rb
|
154
|
+
- test/types/set_type_test.rb
|
151
155
|
- test/types/string_type_test.rb
|
152
156
|
- test/types/time_type_test.rb
|
153
157
|
- test/types/utf8_string_type_test.rb
|
@@ -184,11 +188,13 @@ test_files:
|
|
184
188
|
- test/persistence_test.rb
|
185
189
|
- test/test_helper.rb
|
186
190
|
- test/timestamps_test.rb
|
191
|
+
- test/types/array_type_test.rb
|
187
192
|
- test/types/boolean_type_test.rb
|
188
193
|
- test/types/date_type_test.rb
|
189
194
|
- test/types/float_type_test.rb
|
190
195
|
- test/types/hash_type_test.rb
|
191
196
|
- test/types/integer_type_test.rb
|
197
|
+
- test/types/set_type_test.rb
|
192
198
|
- test/types/string_type_test.rb
|
193
199
|
- test/types/time_type_test.rb
|
194
200
|
- test/types/utf8_string_type_test.rb
|