graphiti-activegraph 0.1.4 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/.travis.yml +10 -0
- data/CHANGELOG.md +15 -0
- data/Gemfile +1 -0
- data/LICENSE.txt +21 -0
- data/graphiti-activegraph.gemspec +1 -0
- data/lib/graphiti/active_graph/adapters/active_graph.rb +13 -7
- data/lib/graphiti/active_graph/adapters/active_graph/polymorphic_belongs_to.rb +15 -0
- data/lib/graphiti/active_graph/resource.rb +3 -0
- data/lib/graphiti/active_graph/resource_proxy.rb +1 -1
- data/lib/graphiti/active_graph/runner.rb +1 -1
- data/lib/graphiti/active_graph/sideload_resolve.rb +0 -17
- data/lib/graphiti/active_graph/util/serializer_relationship.rb +3 -4
- data/lib/graphiti/active_graph/version.rb +1 -1
- metadata +26 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f6f5689742540eacd7c8d5af6c94d69deca502eaf16b1e5d4c69c4e6bb34ad88
|
4
|
+
data.tar.gz: 8f0cdad94dc592a5496ac839abea4727422cd1b09a2dd5fe8df908a2a3422106
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9bde7647cac6007c4378c427c494c3d67a3d838794189c82f347c89ce1a3916c18de66a39aee01f7b3fd1ec65130d956ef3733ce460084cc64731c4ff3127cfe
|
7
|
+
data.tar.gz: b563699ee2c31d298c10ac0fe70a63100f75b196c24fddc2abc44f0225f5087267ff6e8ff6fddd508ea6fbf06eded19a85b4f1decc2e5f9dc1c744c670d14fd4
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--require spec_helper
|
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
data/Gemfile
CHANGED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2020 Hardik Joshi
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
@@ -30,4 +30,5 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_development_dependency "activemodel", ">= 4.1"
|
31
31
|
spec.add_development_dependency "graphiti_spec_helpers", "1.0.beta.4"
|
32
32
|
spec.add_development_dependency "standard"
|
33
|
+
spec.add_development_dependency "rspec", "~> 3.9.0"
|
33
34
|
end
|
@@ -4,7 +4,9 @@ module Graphiti::ActiveGraph
|
|
4
4
|
def self.sideloading_classes
|
5
5
|
{
|
6
6
|
has_many: Graphiti::ActiveGraph::Adapters::ActiveGraph::HasManySideload,
|
7
|
-
has_one: Graphiti::ActiveGraph::Adapters::ActiveGraph::HasOneSideload
|
7
|
+
has_one: Graphiti::ActiveGraph::Adapters::ActiveGraph::HasOneSideload,
|
8
|
+
polymorphic_belongs_to: Graphiti::ActiveGraph::Adapters::ActiveGraph::PolymorphicBelongsTo,
|
9
|
+
belongs_to: Graphiti::ActiveGraph::Adapters::ActiveGraph::HasOneSideload,
|
8
10
|
}
|
9
11
|
end
|
10
12
|
|
@@ -15,13 +17,17 @@ module Graphiti::ActiveGraph
|
|
15
17
|
def assign_attributes(model_instance, attributes)
|
16
18
|
model_instance.before_assign_resource_attr if model_instance.respond_to?(:before_assign_resource_attr)
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
-
|
20
|
+
# currently there is no possible way to assign association on activegraph without triggering save
|
21
|
+
# https://github.com/neo4jrb/activegraph/issues/1445
|
22
|
+
# using "=" operator bypasses validations and callbacks in case of associations
|
23
|
+
# once above issue is fixed, we can change the below code to assign instead of update
|
24
|
+
|
25
|
+
model_instance.update(attributes)
|
21
26
|
end
|
22
27
|
|
23
|
-
def paginate(scope, current_page, per_page)
|
24
|
-
|
28
|
+
def paginate(scope, current_page, per_page, offset)
|
29
|
+
offset ||= (current_page - 1) * per_page
|
30
|
+
scope.skip(offset).limit(per_page)
|
25
31
|
end
|
26
32
|
|
27
33
|
def transaction(_model_class)
|
@@ -43,7 +49,7 @@ module Graphiti::ActiveGraph
|
|
43
49
|
end
|
44
50
|
|
45
51
|
def save(model_instance)
|
46
|
-
model_instance.save
|
52
|
+
model_instance.save if model_instance.changed?
|
47
53
|
model_instance
|
48
54
|
end
|
49
55
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class Graphiti::ActiveGraph::Adapters::ActiveGraph::PolymorphicBelongsTo < Graphiti::Sideload::PolymorphicBelongsTo
|
2
|
+
include Graphiti::ActiveGraph::Adapters::ActiveGraph::Sideload
|
3
|
+
|
4
|
+
def default_base_scope
|
5
|
+
resource_class.model.all
|
6
|
+
end
|
7
|
+
|
8
|
+
def infer_foreign_key
|
9
|
+
association_name.to_sym
|
10
|
+
end
|
11
|
+
|
12
|
+
def default_value_when_empty
|
13
|
+
nil
|
14
|
+
end
|
15
|
+
end
|
@@ -57,7 +57,7 @@ module Graphiti::ActiveGraph
|
|
57
57
|
original = Graphiti.context[:namespace]
|
58
58
|
begin
|
59
59
|
Graphiti.context[:namespace] = action
|
60
|
-
::Graphiti::RequestValidator.new(@resource, @payload.params).validate!
|
60
|
+
::Graphiti::RequestValidator.new(@resource, @payload.params, action).validate!
|
61
61
|
validator = persist {
|
62
62
|
@resource.persist_with_relationships \
|
63
63
|
@payload.meta(action: action),
|
@@ -6,7 +6,7 @@ module Graphiti::ActiveGraph
|
|
6
6
|
@query = query
|
7
7
|
@action = action
|
8
8
|
|
9
|
-
validator = ::Graphiti::RequestValidator.new(jsonapi_resource, params)
|
9
|
+
validator = ::Graphiti::RequestValidator.new(jsonapi_resource, params, action)
|
10
10
|
|
11
11
|
validator.validate! unless params[:skip_render_val]
|
12
12
|
|
@@ -1,23 +1,6 @@
|
|
1
1
|
module Graphiti::ActiveGraph
|
2
2
|
module SideloadResolve
|
3
3
|
def resolve_sideloads(parents)
|
4
|
-
@query.sideloads.each_pair do |name, q|
|
5
|
-
sideload = @resource.class.sideload(name)
|
6
|
-
next if sideload.nil? || sideload.shared_remote?
|
7
|
-
|
8
|
-
if sideload.assign_each_proc
|
9
|
-
Array.wrap(parents).each do |parent|
|
10
|
-
children = sideload.assign_each_proc.call(parent) || sideload.default_value_when_empty
|
11
|
-
|
12
|
-
# currently there is no possible way to assign association on activegraph without triggering save
|
13
|
-
# https://github.com/neo4jrb/activegraph/issues/1445
|
14
|
-
# as a workaround we are using instance variable here to store and retrive associations
|
15
|
-
# once above issue is fixed use that fix to assign the association here
|
16
|
-
# and also remove 1) this code and 2) SerializerRelationship#data_proc
|
17
|
-
parent.instance_variable_set("@graphiti_render_#{name}", { data: children })
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
4
|
end
|
22
5
|
end
|
23
6
|
end
|
@@ -6,11 +6,10 @@ module Graphiti::ActiveGraph
|
|
6
6
|
->(_) {
|
7
7
|
# use custom assigned sideload if it is specified via "assign_each_proc"
|
8
8
|
# otherwise retrieve sideload using normal getter on parent object
|
9
|
-
|
10
|
-
|
11
|
-
@object.public_send(sideload_ref.association_name)
|
9
|
+
records = if custom_proc = sideload_ref.assign_each_proc
|
10
|
+
custom_proc.call(@object)
|
12
11
|
else
|
13
|
-
|
12
|
+
@object.public_send(sideload_ref.association_name)
|
14
13
|
end
|
15
14
|
|
16
15
|
if records
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphiti-activegraph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hardik Joshi
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: graphiti
|
@@ -164,7 +164,21 @@ dependencies:
|
|
164
164
|
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
|
-
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rspec
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 3.9.0
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 3.9.0
|
181
|
+
description:
|
168
182
|
email:
|
169
183
|
- hardikjoshi1991@gmail.com
|
170
184
|
executables: []
|
@@ -172,12 +186,17 @@ extensions: []
|
|
172
186
|
extra_rdoc_files: []
|
173
187
|
files:
|
174
188
|
- ".gitignore"
|
189
|
+
- ".rspec"
|
190
|
+
- ".travis.yml"
|
191
|
+
- CHANGELOG.md
|
175
192
|
- Gemfile
|
193
|
+
- LICENSE.txt
|
176
194
|
- graphiti-activegraph.gemspec
|
177
195
|
- lib/graphiti-activegraph.rb
|
178
196
|
- lib/graphiti/active_graph/adapters/active_graph.rb
|
179
197
|
- lib/graphiti/active_graph/adapters/active_graph/has_many_sideload.rb
|
180
198
|
- lib/graphiti/active_graph/adapters/active_graph/has_one_sideload.rb
|
199
|
+
- lib/graphiti/active_graph/adapters/active_graph/polymorphic_belongs_to.rb
|
181
200
|
- lib/graphiti/active_graph/adapters/active_graph/sideload.rb
|
182
201
|
- lib/graphiti/active_graph/deserializer.rb
|
183
202
|
- lib/graphiti/active_graph/query.rb
|
@@ -196,7 +215,7 @@ homepage: https://github.com/mrhardikjoshi/graphiti-activegraph
|
|
196
215
|
licenses:
|
197
216
|
- MIT
|
198
217
|
metadata: {}
|
199
|
-
post_install_message:
|
218
|
+
post_install_message:
|
200
219
|
rdoc_options: []
|
201
220
|
require_paths:
|
202
221
|
- lib
|
@@ -211,9 +230,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
211
230
|
- !ruby/object:Gem::Version
|
212
231
|
version: '0'
|
213
232
|
requirements: []
|
214
|
-
|
215
|
-
|
216
|
-
signing_key:
|
233
|
+
rubygems_version: 3.2.3
|
234
|
+
signing_key:
|
217
235
|
specification_version: 4
|
218
236
|
summary: Easily build jsonapi.org-compatible APIs for GraphDB
|
219
237
|
test_files: []
|