graphiti-activegraph 1.1.0 → 1.2.0
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 +4 -4
- data/CHANGELOG.md +10 -0
- data/graphiti-activegraph.gemspec +1 -1
- data/lib/graphiti/active_graph/resource.rb +4 -0
- data/lib/graphiti/active_graph/scoping/internal/sorting_aliases.rb +11 -1
- data/lib/graphiti/active_graph/serializer.rb +15 -0
- data/lib/graphiti/active_graph/sideload_resolve.rb +19 -1
- data/lib/graphiti/active_graph/version.rb +1 -1
- data/lib/graphiti-activegraph.rb +1 -0
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96124388fd7da0f681746c33d199a96431291363f8ec3acd1a1ef2533fba7e3b
|
4
|
+
data.tar.gz: ba13ae0e3229a1e31a3e575d8d7b1e8c502a58d6d774ab3326b1936138e09d5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9985ef640559045360fc73f8dc41daf8ce09b43d92010cddff64bec9967e031cea3d806683865793c0dcca9f3e3092539cee81501b9bcc06e0a6f1bf4b0f1104
|
7
|
+
data.tar.gz: 711c568f287e85dc68d39fcf09b87425c7e8f1c61e20ce656578d1eee12bee57a2c62258a30f9df4e20380d9cebebb020c1951e557ff61d1eb82944dd0eeae64
|
data/CHANGELOG.md
CHANGED
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
## [1.2.0] - 2025-05-20
|
11
|
+
|
12
|
+
### Added
|
13
|
+
|
14
|
+
- **Graphiti Compatibility**: Added support for Graphiti versions up to 1.8.x, fixing previously broken sideloading behavior.
|
15
|
+
|
16
|
+
### Fixed
|
17
|
+
|
18
|
+
- **Serializer**: Resolved an issue where polymorphic resources were not functioning correctly in serializers.
|
19
|
+
|
10
20
|
## [1.1.0] - 2025-05-2
|
11
21
|
|
12
22
|
### Added
|
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
18
18
|
spec.require_paths = ['lib']
|
19
19
|
|
20
|
-
spec.add_dependency 'graphiti', '>= 1.6.4'
|
20
|
+
spec.add_dependency 'graphiti', '>= 1.6.4', '<= 1.8.1'
|
21
21
|
spec.add_dependency 'activegraph', '>= 12.0.0.beta.5'
|
22
22
|
spec.add_dependency 'parslet', '>= 2.0.0'
|
23
23
|
spec.add_dependency 'activegraph-extensions', '>= 0.1.0'
|
@@ -5,7 +5,7 @@ module Graphiti::ActiveGraph
|
|
5
5
|
module SortingAliases
|
6
6
|
def with_vars_for_sort
|
7
7
|
[] unless add_extra_vars_to_query?
|
8
|
-
(deep_sort_keys + sort_keys) & resource.extra_attributes.keys
|
8
|
+
(deep_sort_keys + sort_keys) & resource.extra_attributes.keys - graphiti_query_vars.map(&:to_sym)
|
9
9
|
end
|
10
10
|
|
11
11
|
def add_extra_vars_to_query?
|
@@ -19,6 +19,16 @@ module Graphiti::ActiveGraph
|
|
19
19
|
def sort_keys
|
20
20
|
query.sorts.collect(&:keys).flatten
|
21
21
|
end
|
22
|
+
|
23
|
+
def query
|
24
|
+
@opts[:query_obj]
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def graphiti_query_vars
|
30
|
+
Graphiti.context.fetch(:with_vars, [])
|
31
|
+
end
|
22
32
|
end
|
23
33
|
end
|
24
34
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Graphiti::ActiveGraph
|
2
|
+
module Serializer
|
3
|
+
def jsonapi_resource_class
|
4
|
+
if polymorphic?
|
5
|
+
"#{jsonapi_type.to_s.singularize.camelize}Resource".constantize
|
6
|
+
else
|
7
|
+
@resource.class
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def resource_class_name
|
12
|
+
@_type.to_s.singularize.camelize
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -19,11 +19,29 @@ module Graphiti::ActiveGraph
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def resolve
|
22
|
-
|
22
|
+
resolve_with_callbacks.tap { |results| preload_extra_fields(results) }
|
23
23
|
end
|
24
24
|
|
25
25
|
private
|
26
26
|
|
27
|
+
def resolve_with_callbacks
|
28
|
+
if @query.zero_results?
|
29
|
+
[]
|
30
|
+
else
|
31
|
+
resolved = broadcast_data { |payload|
|
32
|
+
@object = @resource.before_resolve(@object, @query)
|
33
|
+
payload[:results] = @resource.resolve(@object)
|
34
|
+
payload[:results]
|
35
|
+
}
|
36
|
+
resolved.compact!
|
37
|
+
assign_serializer(resolved)
|
38
|
+
yield resolved if block_given?
|
39
|
+
@opts[:after_resolve]&.call(resolved)
|
40
|
+
resolve_sideloads(resolved) unless @query.sideloads.empty?
|
41
|
+
resolved
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
27
45
|
def preload_extra_fields(results)
|
28
46
|
requested_extra_fields.each do |extra_field_name|
|
29
47
|
next unless preload_extra_field?(extra_field_name)
|
data/lib/graphiti-activegraph.rb
CHANGED
@@ -24,6 +24,7 @@ Graphiti::Resource::Persistence.prepend Graphiti::ActiveGraph::Resources::Persis
|
|
24
24
|
Graphiti::Resource::Interface::ClassMethods.prepend Graphiti::ActiveGraph::Resources::Interface::ClassMethods
|
25
25
|
require 'graphiti'
|
26
26
|
Graphiti::Scoping::Filter.prepend Graphiti::ActiveGraph::Scoping::Filter
|
27
|
+
Graphiti::Serializer.prepend Graphiti::ActiveGraph::Serializer
|
27
28
|
Graphiti::Util::SerializerRelationship.prepend Graphiti::ActiveGraph::Util::SerializerRelationship
|
28
29
|
Graphiti::Util::SerializerAttribute.prepend Graphiti::ActiveGraph::Util::SerializerAttribute
|
29
30
|
Graphiti::Util::RelationshipPayload.prepend Graphiti::ActiveGraph::Util::RelationshipPayload
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphiti-activegraph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hardik Joshi
|
8
8
|
bindir: exe
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-05-
|
10
|
+
date: 2025-05-20 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: graphiti
|
@@ -16,6 +16,9 @@ dependencies:
|
|
16
16
|
- - ">="
|
17
17
|
- !ruby/object:Gem::Version
|
18
18
|
version: 1.6.4
|
19
|
+
- - "<="
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.8.1
|
19
22
|
type: :runtime
|
20
23
|
prerelease: false
|
21
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -23,6 +26,9 @@ dependencies:
|
|
23
26
|
- - ">="
|
24
27
|
- !ruby/object:Gem::Version
|
25
28
|
version: 1.6.4
|
29
|
+
- - "<="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 1.8.1
|
26
32
|
- !ruby/object:Gem::Dependency
|
27
33
|
name: activegraph
|
28
34
|
requirement: !ruby/object:Gem::Requirement
|
@@ -213,6 +219,7 @@ files:
|
|
213
219
|
- lib/graphiti/active_graph/scoping/internal/sort_normalizer.rb
|
214
220
|
- lib/graphiti/active_graph/scoping/internal/sorting_aliases.rb
|
215
221
|
- lib/graphiti/active_graph/scoping/internal/sparse_fields_eagerloading.rb
|
222
|
+
- lib/graphiti/active_graph/serializer.rb
|
216
223
|
- lib/graphiti/active_graph/sideload_resolve.rb
|
217
224
|
- lib/graphiti/active_graph/util/parsers/rel_chain.rb
|
218
225
|
- lib/graphiti/active_graph/util/relationship_payload.rb
|