related 0.6.4 → 0.6.5
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 +7 -0
- data/lib/related/entity.rb +8 -5
- data/lib/related/relationship.rb +1 -3
- data/lib/related/validations/check_redis_uniqueness.rb +11 -0
- data/lib/related/version.rb +1 -1
- data/lib/related.rb +1 -0
- data/test/custom_id_attribute_test.rb +35 -0
- data/test/test_helper.rb +2 -2
- metadata +30 -25
- data/test/dump-1.rdb +0 -1
- data/test/dump-2.rdb +0 -1
- data/test/dump-3.rdb +0 -1
- data/test/dump-4.rdb +0 -1
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 70a2db50fca75efa1347b6ba41ea376cd98837dc
|
|
4
|
+
data.tar.gz: a714af9f8116c1792c81748d7d3b250e548d36df
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: b28c5d6cba03e88a78017c1aa0de067e6fd033acd441db56bf4b222e1a4e484d9af773ee5309fe9ac199bf06927aa26fbe77532382eb8f8813c24345e4da218b
|
|
7
|
+
data.tar.gz: 29a74e4b10cec1e3ca460eb7de6a5ee943b9410c8003986a13cbf44258e24a4cd57c720946978cf8a1ff66dc8f7311d666bc0929940a709a13da28e989e65182
|
data/lib/related/entity.rb
CHANGED
|
@@ -17,8 +17,13 @@ module Related
|
|
|
17
17
|
attr_reader :id
|
|
18
18
|
attr_reader :attributes
|
|
19
19
|
|
|
20
|
+
validates_with CheckRedisUniqueness, on: :create
|
|
21
|
+
|
|
20
22
|
def initialize(attributes = {})
|
|
21
23
|
@attributes = {}
|
|
24
|
+
|
|
25
|
+
@_internal_id = attributes.delete(:id) || Related.generate_id
|
|
26
|
+
|
|
22
27
|
attributes.each do |key,value|
|
|
23
28
|
serializer = self.class.property_serializer(key)
|
|
24
29
|
@attributes[key.to_s] = serializer ?
|
|
@@ -156,9 +161,8 @@ module Related
|
|
|
156
161
|
|
|
157
162
|
def create
|
|
158
163
|
run_callbacks :create do
|
|
159
|
-
raise Related::ValidationsFailed, self unless valid?
|
|
160
|
-
@id =
|
|
161
|
-
@attributes ||= {}
|
|
164
|
+
raise Related::ValidationsFailed, self unless valid?(:create)
|
|
165
|
+
@id = @_internal_id
|
|
162
166
|
@attributes.merge!('created_at' => Time.now.utc.iso8601)
|
|
163
167
|
Related.redis.hmset(@id, *@attributes.to_a.flatten)
|
|
164
168
|
end
|
|
@@ -167,8 +171,7 @@ module Related
|
|
|
167
171
|
|
|
168
172
|
def update
|
|
169
173
|
run_callbacks :update do
|
|
170
|
-
raise Related::ValidationsFailed, self unless valid?
|
|
171
|
-
@attributes ||= {}
|
|
174
|
+
raise Related::ValidationsFailed, self unless valid?(:update)
|
|
172
175
|
@attributes.merge!('updated_at' => Time.now.utc.iso8601)
|
|
173
176
|
Related.redis.hmset(@id, *@attributes.to_a.flatten)
|
|
174
177
|
end
|
data/lib/related/relationship.rb
CHANGED
|
@@ -4,9 +4,7 @@ module Related
|
|
|
4
4
|
validates_presence_of :label, :start_node_id, :end_node_id
|
|
5
5
|
|
|
6
6
|
def initialize(*attributes)
|
|
7
|
-
|
|
8
|
-
@id = attributes.first
|
|
9
|
-
end
|
|
7
|
+
@_internal_id = attributes.first.is_a?(String) ? attributes.first : Related.generate_id
|
|
10
8
|
@attributes = attributes.last
|
|
11
9
|
end
|
|
12
10
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module Related
|
|
2
|
+
class CheckRedisUniqueness < ActiveModel::Validator
|
|
3
|
+
def validate(entity)
|
|
4
|
+
internal_id = entity.instance_variable_get(:@_internal_id)
|
|
5
|
+
|
|
6
|
+
if Related.redis.exists(internal_id)
|
|
7
|
+
entity.errors[:id] << "#{internal_id.inspect} already exists."
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
data/lib/related/version.rb
CHANGED
data/lib/related.rb
CHANGED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require File.expand_path('test/test_helper')
|
|
2
|
+
|
|
3
|
+
class CustomIdAttribute < ActiveModel::TestCase
|
|
4
|
+
|
|
5
|
+
class FakeThing < Related::Node
|
|
6
|
+
property :id, Integer
|
|
7
|
+
property :name, String
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def setup
|
|
11
|
+
Related.redis.flushall
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_manually_set_id
|
|
15
|
+
FakeThing.create(id: 42, name: "Bond, James Bond")
|
|
16
|
+
|
|
17
|
+
found = FakeThing.find(42)
|
|
18
|
+
|
|
19
|
+
assert_equal 42, found.id
|
|
20
|
+
assert_equal "Bond, James Bond", found.name
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_unique_ids
|
|
24
|
+
FakeThing.create(id: 42, name: "Bond, James Bond")
|
|
25
|
+
|
|
26
|
+
assert_raise Related::ValidationsFailed do
|
|
27
|
+
FakeThing.create(id: 42, name: "Black Bears")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
found = FakeThing.find(42)
|
|
31
|
+
|
|
32
|
+
assert_equal 42, found.id
|
|
33
|
+
assert_equal "Bond, James Bond", found.name
|
|
34
|
+
end
|
|
35
|
+
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,49 +1,57 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: related
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 0.6.5
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- Niklas Holmgren
|
|
9
8
|
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date: 2013-
|
|
11
|
+
date: 2013-11-24 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
14
|
name: redis
|
|
16
|
-
requirement:
|
|
17
|
-
none: false
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
18
16
|
requirements:
|
|
19
|
-
- -
|
|
17
|
+
- - '>'
|
|
20
18
|
- !ruby/object:Gem::Version
|
|
21
19
|
version: 2.0.0
|
|
22
20
|
type: :runtime
|
|
23
21
|
prerelease: false
|
|
24
|
-
version_requirements:
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - '>'
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 2.0.0
|
|
25
27
|
- !ruby/object:Gem::Dependency
|
|
26
28
|
name: redis-namespace
|
|
27
|
-
requirement:
|
|
28
|
-
none: false
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
30
|
requirements:
|
|
30
|
-
- -
|
|
31
|
+
- - '>'
|
|
31
32
|
- !ruby/object:Gem::Version
|
|
32
33
|
version: 0.8.0
|
|
33
34
|
type: :runtime
|
|
34
35
|
prerelease: false
|
|
35
|
-
version_requirements:
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - '>'
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: 0.8.0
|
|
36
41
|
- !ruby/object:Gem::Dependency
|
|
37
42
|
name: activemodel
|
|
38
|
-
requirement:
|
|
39
|
-
none: false
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
40
44
|
requirements:
|
|
41
|
-
- -
|
|
45
|
+
- - '>='
|
|
42
46
|
- !ruby/object:Gem::Version
|
|
43
47
|
version: '0'
|
|
44
48
|
type: :runtime
|
|
45
49
|
prerelease: false
|
|
46
|
-
version_requirements:
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - '>='
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
47
55
|
description: Related is a Redis-backed high performance distributed graph database.
|
|
48
56
|
email: niklas@sutajio.se
|
|
49
57
|
executables: []
|
|
@@ -64,15 +72,13 @@ files:
|
|
|
64
72
|
- lib/related/node.rb
|
|
65
73
|
- lib/related/relationship.rb
|
|
66
74
|
- lib/related/root.rb
|
|
75
|
+
- lib/related/validations/check_redis_uniqueness.rb
|
|
67
76
|
- lib/related/version.rb
|
|
68
77
|
- lib/related.rb
|
|
69
78
|
- test/active_model_test.rb
|
|
79
|
+
- test/custom_id_attribute_test.rb
|
|
70
80
|
- test/custom_node_test.rb
|
|
71
81
|
- test/data_flow_test.rb
|
|
72
|
-
- test/dump-1.rdb
|
|
73
|
-
- test/dump-2.rdb
|
|
74
|
-
- test/dump-3.rdb
|
|
75
|
-
- test/dump-4.rdb
|
|
76
82
|
- test/follower_test.rb
|
|
77
83
|
- test/model_test.rb
|
|
78
84
|
- test/performance_test.rb
|
|
@@ -84,27 +90,26 @@ files:
|
|
|
84
90
|
- test/test_helper.rb
|
|
85
91
|
homepage: http://github.com/sutajio/related/
|
|
86
92
|
licenses: []
|
|
93
|
+
metadata: {}
|
|
87
94
|
post_install_message:
|
|
88
95
|
rdoc_options:
|
|
89
96
|
- --charset=UTF-8
|
|
90
97
|
require_paths:
|
|
91
98
|
- lib
|
|
92
99
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
93
|
-
none: false
|
|
94
100
|
requirements:
|
|
95
|
-
- -
|
|
101
|
+
- - '>='
|
|
96
102
|
- !ruby/object:Gem::Version
|
|
97
103
|
version: '0'
|
|
98
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
99
|
-
none: false
|
|
100
105
|
requirements:
|
|
101
|
-
- -
|
|
106
|
+
- - '>='
|
|
102
107
|
- !ruby/object:Gem::Version
|
|
103
108
|
version: '0'
|
|
104
109
|
requirements: []
|
|
105
110
|
rubyforge_project:
|
|
106
|
-
rubygems_version:
|
|
111
|
+
rubygems_version: 2.0.6
|
|
107
112
|
signing_key:
|
|
108
|
-
specification_version:
|
|
113
|
+
specification_version: 4
|
|
109
114
|
summary: Related is a Redis-backed high performance distributed graph database.
|
|
110
115
|
test_files: []
|
data/test/dump-1.rdb
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
REDIS0006�ܳC�Z��V
|
data/test/dump-2.rdb
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
REDIS0006�ܳC�Z��V
|
data/test/dump-3.rdb
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
REDIS0006�ܳC�Z��V
|
data/test/dump-4.rdb
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
REDIS0006�ܳC�Z��V
|