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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c387f138fe40ab7a304c5d587a0281258e2bf4e8304d7e0f0967295adeeef6d7
4
- data.tar.gz: 6154b76796fef327e488b722d1075b05f448be9fd499e4b8525e58b3544399d0
3
+ metadata.gz: 96124388fd7da0f681746c33d199a96431291363f8ec3acd1a1ef2533fba7e3b
4
+ data.tar.gz: ba13ae0e3229a1e31a3e575d8d7b1e8c502a58d6d774ab3326b1936138e09d5c
5
5
  SHA512:
6
- metadata.gz: 16cf1d53448e132be9dd3c45dc755f933f434114dc13d7414b3670becaf97c4696ba0c57e3f10075f984b60516d1286d3ccee01bad8baa4bc2bad1143ea1d1f4
7
- data.tar.gz: 69a336f08b80474be83a0d0111e74a7cfbed451e5dc3ca2dba41318e3212c0e10565f799be327fdc9a26eed111b7ef1a7a46d90f24e85151a4f0d1e719b909d9
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'
@@ -84,6 +84,10 @@ module Graphiti
84
84
  {}
85
85
  end
86
86
 
87
+ def all_models
88
+ polymorphic? ? self.class.children.map(&:model) : [model]
89
+ end
90
+
87
91
  private
88
92
 
89
93
  def scoping_class
@@ -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
- super.tap { |results| preload_extra_fields(results) }
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)
@@ -1,5 +1,5 @@
1
1
  module Graphiti
2
2
  module ActiveGraph
3
- VERSION = '1.1.0'
3
+ VERSION = '1.2.0'
4
4
  end
5
5
  end
@@ -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.1.0
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-02 00:00:00.000000000 Z
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