graphiti-activegraph 0.1.25 → 0.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: 91f9eb76f0b56c276cf1ec4fbef4d535e768c85dbee0d503c3bf9e47c492b509
4
- data.tar.gz: 9ead092210d92a237fed63c396cf302730fffe601d1fcb0a00a1265563cc0c66
3
+ metadata.gz: ba0c3b914198cabc31276a535e428887a5ff15ff557d3dbf1f40f7ef63d463ce
4
+ data.tar.gz: 29c6bcff84e546779872c7cd197727f8ecaad1a12ece312a5032e93cd90c3060
5
5
  SHA512:
6
- metadata.gz: 48334374bd34917e110d55156847d8cc3ba389e45dc76bb7d3db1df2ca8cc59cda5a46ff23c79aff298e0700201d743d3ca04d53b0bb4ae843a3db037c13bff9
7
- data.tar.gz: cb3ee1de2754dcd3ddfcccc84970aaffc21fa8c2c05e6518299c6bd55c7a4f52830462a9a092152eeb93ece42e3476532094d41bf41d57683eb43d34cf9b1f64
6
+ metadata.gz: 5d930274a4203b73d77a50281c1091e4a4e5cf0bb0b467398dab4b3e2edd59daa60e63d31250941f1c373d04e9136a46bcb2c80b7cd2a0b29dfd685691e4c64f
7
+ data.tar.gz: bb3211192ac37a29c578ab71076e57995ddb7768f233a571428c9088989e8b773d36536f6a8f1d9f4d13154c0bfe53aedd3e5916507451641aded67b83f7d36a
@@ -18,7 +18,7 @@ jobs:
18
18
  strategy:
19
19
  fail-fast: false
20
20
  matrix:
21
- ruby-version: [ jruby ]
21
+ ruby-version: [ jruby, ruby ]
22
22
  env:
23
23
  JRUBY_OPTS: --debug -J-Xmx1280m -Xcompile.invokedynamic=false -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -J-noverify -Xcompile.mode=OFF
24
24
  steps:
data/CHANGELOG.md CHANGED
@@ -62,6 +62,17 @@ Features:
62
62
 
63
63
  - Added support to preload extra_fields for the main resource, replacing N+1 queries with a single query. This does not apply to sideloaded resources.
64
64
 
65
+ ## 0.2.0 (01-24-2025)
66
+
67
+ Features:
68
+
69
+ - Added MRI support
70
+ - Added support for rails 8
71
+
72
+ Breaking changes:
73
+
74
+ - Removed support for graphiti <= 1.6.3
75
+
65
76
  <!-- ### [version (DD-MM-YYYY)] -->
66
77
  <!-- Breaking changes:-->
67
78
  <!-- Features:-->
@@ -1,36 +1,28 @@
1
- lib = File.expand_path("../lib", __FILE__)
1
+ lib = File.expand_path('../lib', __FILE__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require "graphiti/active_graph/version"
3
+ require 'graphiti/active_graph/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "graphiti-activegraph"
6
+ spec.name = 'graphiti-activegraph'
7
7
  spec.version = Graphiti::ActiveGraph::VERSION
8
- spec.authors = ["Hardik Joshi"]
9
- spec.email = ["hardikjoshi1991@gmail.com"]
8
+ spec.authors = ['Hardik Joshi']
9
+ spec.email = ['hardikjoshi1991@gmail.com']
10
10
 
11
- spec.summary = "Easily build jsonapi.org-compatible APIs for GraphDB"
12
- spec.homepage = "https://github.com/mrhardikjoshi/graphiti-activegraph"
13
- spec.license = "MIT"
11
+ spec.summary = 'Easily build jsonapi.org-compatible APIs for GraphDB'
12
+ spec.homepage = 'https://github.com/mrhardikjoshi/graphiti-activegraph'
13
+ spec.license = 'MIT'
14
14
 
15
15
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
16
- spec.bindir = "exe"
16
+ spec.bindir = 'exe'
17
17
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
- spec.require_paths = ["lib"]
18
+ spec.require_paths = ['lib']
19
19
 
20
- spec.add_dependency "graphiti", ">= 1.2.0"
21
- spec.add_dependency "activegraph", "~> 12.0.0.beta.4"
22
- spec.add_dependency "activesupport", ">= 6.0"
23
- spec.add_dependency "zeitwerk"
20
+ spec.add_dependency 'graphiti', '>= 1.6.4'
21
+ spec.add_dependency 'activegraph', '>= 12.0.0.beta.5'
24
22
 
25
- spec.add_development_dependency "faraday", "~> 0.15"
26
- spec.add_development_dependency "kaminari", "~> 0.17"
27
- spec.add_development_dependency "bundler"
28
- # dependency conflict introduced during runtime
29
- # jar-dependencies is a default gem in JRuby and also a dependency in neo4j-ruby-driver
30
- spec.add_development_dependency "jar-dependencies", "~> 0.4.1"
31
- spec.add_development_dependency "rake", "~> 10.0"
32
- spec.add_development_dependency "graphiti_spec_helpers", "1.0.beta.4"
33
- spec.add_development_dependency "standard"
34
- spec.add_development_dependency "pry"
35
- spec.add_development_dependency "rspec", "~> 3.9.0"
23
+ spec.add_development_dependency 'graphiti_spec_helpers', '>= 1.0.0'
24
+ spec.add_development_dependency 'standard'
25
+ spec.add_development_dependency 'pry'
26
+ spec.add_development_dependency 'rake', '>= 10.0'
27
+ spec.add_development_dependency 'rspec', '>= 3.9.0'
36
28
  end
@@ -4,12 +4,4 @@ class Graphiti::ActiveGraph::Adapters::ActiveGraph::FunctionSideload < Graphiti:
4
4
  def association?
5
5
  false
6
6
  end
7
-
8
- def self.function_proc(&blk)
9
- self.function_proc = blk
10
- end
11
-
12
- def self.param_proc(&blk)
13
- self.param_proc = blk
14
- end
15
7
  end
@@ -0,0 +1,44 @@
1
+ module Graphiti::ActiveGraph::Concerns
2
+ module PathRelationships
3
+ def add_path_id_to_relationships!(params)
4
+ return params if path_relationships_updated?
5
+ detect_conflict(:id, @params[:id]&.to_s, attributes[:id]&.to_s)
6
+ path_map.each do |rel_name, path_value|
7
+ body_value = relationships.dig(rel_name, :attributes, :id)
8
+ if body_value
9
+ detect_conflict(rel_name, path_value&.to_s, body_value&.to_s)
10
+ else
11
+ update_params(params, rel_name, path_value)
12
+ update_realationships(rel_name, path_value)
13
+ end
14
+ end
15
+ path_relationships_updated!
16
+ params
17
+ end
18
+
19
+ private
20
+
21
+ def path_relationships_updated!
22
+ @path_relationships_updated = true
23
+ end
24
+
25
+ def path_relationships_updated?
26
+ @path_relationships_updated.present?
27
+ end
28
+
29
+ def update_params(params, rel_name, path_value)
30
+ params[:data] ||= {}
31
+ params[:data][:relationships] ||= {}
32
+ params[:data][:relationships][rel_name] = {
33
+ data: {
34
+ type: derive_resource_type(rel_name),
35
+ id: path_value
36
+ }
37
+ }
38
+ end
39
+
40
+ def update_realationships(rel_name, path_value)
41
+ relationships[rel_name] = { meta: {}, attributes: { id: path_value } }
42
+ end
43
+ end
44
+ end
@@ -1,5 +1,7 @@
1
1
  module Graphiti::ActiveGraph
2
- module Deserializer
2
+ class Deserializer < Graphiti::Deserializer
3
+ include Concerns::PathRelationships
4
+
3
5
  class Conflict < StandardError
4
6
  attr_reader :key, :path_value, :body_value
5
7
 
@@ -14,13 +16,33 @@ module Graphiti::ActiveGraph
14
16
  end
15
17
  end
16
18
 
17
- def initialize(payload, env=nil, model=nil, parent_map=nil)
19
+ def initialize(payload, env = nil, model = nil, parent_map = nil)
18
20
  super(payload)
19
21
 
20
22
  @params = payload
21
23
  @model = model
22
24
  @parent_map = parent_map || {}
23
25
  @env = env
26
+
27
+ return unless data.blank? && env && parsable_content?
28
+
29
+ raise ArgumentError, "JSON API payload must contain the 'data' key"
30
+ end
31
+
32
+ def process_relationship_datum(datum)
33
+ {
34
+ meta: {
35
+ jsonapi_type: datum[:type],
36
+ temp_id: datum[:'temp-id'],
37
+ method: datum[:method]&.to_sym
38
+ },
39
+ attributes: datum[:id] ? { id: datum[:id] } : {},
40
+ relationships: {}
41
+ }
42
+ end
43
+
44
+ def meta_params
45
+ data[:meta] || {}
24
46
  end
25
47
 
26
48
  def process_relationships(relationship_hash)
@@ -33,6 +55,10 @@ module Graphiti::ActiveGraph
33
55
  end
34
56
  end
35
57
 
58
+ def relationship?(name)
59
+ relationships[name.to_sym].present?
60
+ end
61
+
36
62
  # change empty relationship as `disassociate` hash so they will be removed
37
63
  def process_nil_relationship(name)
38
64
  attributes = {}
@@ -62,45 +88,6 @@ module Graphiti::ActiveGraph
62
88
  results
63
89
  end
64
90
 
65
- def add_path_id_to_relationships!(params)
66
- return params if path_relationships_updated?
67
- detect_conflict(:id, @params[:id]&.to_s, attributes[:id]&.to_s)
68
- path_map.each do |rel_name, path_value|
69
- body_value = relationships.dig(rel_name, :attributes, :id)
70
- if body_value
71
- detect_conflict(rel_name, path_value&.to_s, body_value&.to_s)
72
- else
73
- update_params(params, rel_name, path_value)
74
- update_realationships(rel_name, path_value)
75
- end
76
- end
77
- path_relationships_updated!
78
- params
79
- end
80
-
81
- def path_relationships_updated!
82
- @path_relationships_updated = true
83
- end
84
-
85
- def path_relationships_updated?
86
- @path_relationships_updated.present?
87
- end
88
-
89
- def update_params(params, rel_name, path_value)
90
- params[:data] ||= {}
91
- params[:data][:relationships] ||= {}
92
- params[:data][:relationships][rel_name] = {
93
- data: {
94
- type: derive_resource_type(rel_name),
95
- id: path_value
96
- }
97
- }
98
- end
99
-
100
- def update_realationships(rel_name, path_value)
101
- relationships[rel_name] = { meta: {}, attributes: { id: path_value } }
102
- end
103
-
104
91
  def path_map
105
92
  map = @params.select { |key, _| key =~ /_id$/ }.permit!.to_h
106
93
  map = filter_keys(map) { |key| key.gsub(/_id$/, '').to_sym }
@@ -127,6 +114,10 @@ module Graphiti::ActiveGraph
127
114
 
128
115
  private
129
116
 
117
+ def parsable_content?
118
+ true
119
+ end
120
+
130
121
  def derive_resource_type(rel_name)
131
122
  if @model.include?(ActiveGraph::Node)
132
123
  @model.associations[rel_name].target_class.model_name.plural.to_s
@@ -0,0 +1,52 @@
1
+ module Graphiti::ActiveGraph::Extensions::Grouping
2
+ class Params
3
+ attr_reader :params, :grouping_criteria_list, :resource_class
4
+ def initialize(params, resource_class)
5
+ @params = params
6
+ @grouping_criteria_list = params.fetch(:group_by, nil)&.split(',') || []
7
+ @resource_class = resource_class
8
+ end
9
+
10
+ def single_grouping_criteria?
11
+ grouping_criteria_list.size < 2
12
+ end
13
+
14
+ def grouping_criteria_on_attribute?
15
+ grouping_criteria_list.any? { |criteria| ends_with_attribute?(resource_class.model, criteria) }
16
+ end
17
+
18
+ def empty?
19
+ grouping_criteria_list.empty?
20
+ end
21
+
22
+ def ends_with_attribute?(model, criteria)
23
+ return false if criteria.blank?
24
+
25
+ last_segment_attribute?(model, criteria.split('.'))
26
+ end
27
+
28
+ private
29
+
30
+ def last_segment_attribute?(model, segments)
31
+ last_segment = segments.last
32
+ intermediate_model = traverse_to_last_associated_model(model, segments[0...-1])
33
+
34
+ intermediate_model && attribute?(intermediate_model, last_segment)
35
+ end
36
+
37
+ def traverse_to_last_associated_model(model, intermediate_segments)
38
+ intermediate_segments.each do |segment|
39
+ return false unless(model = associated_model(model, segment))
40
+ end
41
+ model
42
+ end
43
+
44
+ def attribute?(model, segment)
45
+ model.attribute_names.include?(segment)
46
+ end
47
+
48
+ def associated_model(model, segment)
49
+ model.associations[segment.to_sym]&.target_class
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,27 @@
1
+ module Graphiti::ActiveGraph::Extensions
2
+ class QueryParams
3
+ attr_reader :params, :grouping_extra_params, :resource_class
4
+
5
+ def initialize(params, resource_class, grouping_extra_params: {})
6
+ @params = params
7
+ @resource_class = resource_class
8
+ @grouping_extra_params = grouping_extra_params
9
+ end
10
+
11
+ def group_by
12
+ Grouping::Params.new(params, resource_class)
13
+ end
14
+
15
+ def group_by_params
16
+ group_by_params_hash unless group_by.empty?
17
+ end
18
+
19
+ def group_by_params_hash
20
+ { group_by: group_by.grouping_criteria_list }.merge(grouping_extra_params)
21
+ end
22
+
23
+ def extra_field?(type, name)
24
+ params.dig(:extra_fields, type)&.include?(name.to_s)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,9 @@
1
+ module Graphiti::ActiveGraph
2
+ module RequestValidators
3
+ module Validator
4
+ def deserialized_payload
5
+ @deserialized_payload ||= Graphiti::ActiveGraph::Deserializer.new(@params)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -4,7 +4,7 @@ module Graphiti::ActiveGraph
4
4
  extend ActiveSupport::Concern
5
5
  class_methods do
6
6
  def build(params, base_scope = nil, opts = {})
7
- validate!(params)
7
+ validate_request!(params)
8
8
  runner = ::Graphiti::Runner.new(self, params)
9
9
  runner.proxy(base_scope, { single: true, raise_on_missing: true }.merge(opts) )
10
10
  end
@@ -26,6 +26,8 @@ module Graphiti::ActiveGraph
26
26
  @single ? data_for_preloaded_record : data_for_preloaded_records
27
27
  end
28
28
 
29
+ alias_method :resolve_data, :data
30
+
29
31
  def data_for_preloaded_record
30
32
  @preloaded = @preloaded.is_a?(Array) ? @preloaded[0] : @preloaded
31
33
  @resource.decorate_record(@preloaded)
@@ -1,5 +1,5 @@
1
1
  module Graphiti
2
2
  module ActiveGraph
3
- VERSION = '0.1.25'
3
+ VERSION = '0.2.0'
4
4
  end
5
5
  end
@@ -27,7 +27,6 @@ Graphiti::Scoping::Filter.prepend Graphiti::ActiveGraph::Scoping::Filter
27
27
  Graphiti::Util::SerializerRelationship.prepend Graphiti::ActiveGraph::Util::SerializerRelationship
28
28
  Graphiti::Util::SerializerAttribute.prepend Graphiti::ActiveGraph::Util::SerializerAttribute
29
29
  Graphiti::Util::RelationshipPayload.prepend Graphiti::ActiveGraph::Util::RelationshipPayload
30
- Graphiti::Deserializer.prepend Graphiti::ActiveGraph::Deserializer
31
30
  Graphiti::Query.prepend Graphiti::ActiveGraph::Query
32
31
  Graphiti::Resource.prepend Graphiti::ActiveGraph::ResourceInstanceMethods
33
32
  Graphiti::Resource.extend Graphiti::ActiveGraph::Resource
@@ -35,6 +34,7 @@ Graphiti::ResourceProxy.prepend Graphiti::ActiveGraph::ResourceProxy
35
34
  Graphiti::Runner.prepend Graphiti::ActiveGraph::Runner
36
35
  Graphiti::Scope.prepend Graphiti::ActiveGraph::SideloadResolve
37
36
  Graphiti::Configuration.include Graphiti::SidepostConfiguration
37
+ Graphiti::RequestValidators::Validator.prepend Graphiti::ActiveGraph::RequestValidators::Validator
38
38
 
39
39
  # JSONAPI extensions
40
40
  JSONAPI::Serializable::Resource.prepend Graphiti::ActiveGraph::JsonapiExt::Serializable::ResourceExt
metadata CHANGED
@@ -1,106 +1,64 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphiti-activegraph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.25
4
+ version: 0.2.0
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: 2024-12-05 00:00:00.000000000 Z
11
+ date: 2025-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
+ name: graphiti
14
15
  requirement: !ruby/object:Gem::Requirement
15
16
  requirements:
16
17
  - - ">="
17
18
  - !ruby/object:Gem::Version
18
- version: 1.2.0
19
- name: graphiti
19
+ version: 1.6.4
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.2.0
26
+ version: 1.6.4
27
27
  - !ruby/object:Gem::Dependency
28
- requirement: !ruby/object:Gem::Requirement
29
- requirements:
30
- - - "~>"
31
- - !ruby/object:Gem::Version
32
- version: 12.0.0.beta.4
33
28
  name: activegraph
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: 12.0.0.beta.4
41
- - !ruby/object:Gem::Dependency
42
29
  requirement: !ruby/object:Gem::Requirement
43
30
  requirements:
44
31
  - - ">="
45
32
  - !ruby/object:Gem::Version
46
- version: '6.0'
47
- name: activesupport
33
+ version: 12.0.0.beta.5
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - ">="
53
39
  - !ruby/object:Gem::Version
54
- version: '6.0'
40
+ version: 12.0.0.beta.5
55
41
  - !ruby/object:Gem::Dependency
42
+ name: graphiti_spec_helpers
56
43
  requirement: !ruby/object:Gem::Requirement
57
44
  requirements:
58
45
  - - ">="
59
46
  - !ruby/object:Gem::Version
60
- version: '0'
61
- name: zeitwerk
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- requirement: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '0.15'
75
- name: faraday
47
+ version: 1.0.0
76
48
  type: :development
77
49
  prerelease: false
78
50
  version_requirements: !ruby/object:Gem::Requirement
79
51
  requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '0.15'
83
- - !ruby/object:Gem::Dependency
84
- requirement: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '0.17'
89
- name: kaminari
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
52
+ - - ">="
95
53
  - !ruby/object:Gem::Version
96
- version: '0.17'
54
+ version: 1.0.0
97
55
  - !ruby/object:Gem::Dependency
56
+ name: standard
98
57
  requirement: !ruby/object:Gem::Requirement
99
58
  requirements:
100
59
  - - ">="
101
60
  - !ruby/object:Gem::Version
102
61
  version: '0'
103
- name: bundler
104
62
  type: :development
105
63
  prerelease: false
106
64
  version_requirements: !ruby/object:Gem::Requirement
@@ -109,54 +67,12 @@ dependencies:
109
67
  - !ruby/object:Gem::Version
110
68
  version: '0'
111
69
  - !ruby/object:Gem::Dependency
112
- requirement: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: 0.4.1
117
- name: jar-dependencies
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: 0.4.1
125
- - !ruby/object:Gem::Dependency
126
- requirement: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: '10.0'
131
- name: rake
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '10.0'
139
- - !ruby/object:Gem::Dependency
140
- requirement: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - '='
143
- - !ruby/object:Gem::Version
144
- version: 1.0.beta.4
145
- name: graphiti_spec_helpers
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - '='
151
- - !ruby/object:Gem::Version
152
- version: 1.0.beta.4
153
- - !ruby/object:Gem::Dependency
70
+ name: pry
154
71
  requirement: !ruby/object:Gem::Requirement
155
72
  requirements:
156
73
  - - ">="
157
74
  - !ruby/object:Gem::Version
158
75
  version: '0'
159
- name: standard
160
76
  type: :development
161
77
  prerelease: false
162
78
  version_requirements: !ruby/object:Gem::Requirement
@@ -165,34 +81,34 @@ dependencies:
165
81
  - !ruby/object:Gem::Version
166
82
  version: '0'
167
83
  - !ruby/object:Gem::Dependency
84
+ name: rake
168
85
  requirement: !ruby/object:Gem::Requirement
169
86
  requirements:
170
87
  - - ">="
171
88
  - !ruby/object:Gem::Version
172
- version: '0'
173
- name: pry
89
+ version: '10.0'
174
90
  type: :development
175
91
  prerelease: false
176
92
  version_requirements: !ruby/object:Gem::Requirement
177
93
  requirements:
178
94
  - - ">="
179
95
  - !ruby/object:Gem::Version
180
- version: '0'
96
+ version: '10.0'
181
97
  - !ruby/object:Gem::Dependency
98
+ name: rspec
182
99
  requirement: !ruby/object:Gem::Requirement
183
100
  requirements:
184
- - - "~>"
101
+ - - ">="
185
102
  - !ruby/object:Gem::Version
186
103
  version: 3.9.0
187
- name: rspec
188
104
  type: :development
189
105
  prerelease: false
190
106
  version_requirements: !ruby/object:Gem::Requirement
191
107
  requirements:
192
- - - "~>"
108
+ - - ">="
193
109
  - !ruby/object:Gem::Version
194
110
  version: 3.9.0
195
- description:
111
+ description:
196
112
  email:
197
113
  - hardikjoshi1991@gmail.com
198
114
  executables: []
@@ -213,9 +129,13 @@ files:
213
129
  - lib/graphiti/active_graph/adapters/active_graph/has_one_sideload.rb
214
130
  - lib/graphiti/active_graph/adapters/active_graph/polymorphic_belongs_to.rb
215
131
  - lib/graphiti/active_graph/adapters/active_graph/sideload.rb
132
+ - lib/graphiti/active_graph/concerns/path_relationships.rb
216
133
  - lib/graphiti/active_graph/deserializer.rb
134
+ - lib/graphiti/active_graph/extensions/grouping/params.rb
135
+ - lib/graphiti/active_graph/extensions/query_params.rb
217
136
  - lib/graphiti/active_graph/jsonapi_ext/serializable/resource_ext.rb
218
137
  - lib/graphiti/active_graph/query.rb
138
+ - lib/graphiti/active_graph/request_validators/validator.rb
219
139
  - lib/graphiti/active_graph/resource.rb
220
140
  - lib/graphiti/active_graph/resource/interface.rb
221
141
  - lib/graphiti/active_graph/resource/persistence.rb
@@ -233,7 +153,7 @@ homepage: https://github.com/mrhardikjoshi/graphiti-activegraph
233
153
  licenses:
234
154
  - MIT
235
155
  metadata: {}
236
- post_install_message:
156
+ post_install_message:
237
157
  rdoc_options: []
238
158
  require_paths:
239
159
  - lib
@@ -248,8 +168,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
248
168
  - !ruby/object:Gem::Version
249
169
  version: '0'
250
170
  requirements: []
251
- rubygems_version: 3.3.26
252
- signing_key:
171
+ rubygems_version: 3.0.3.1
172
+ signing_key:
253
173
  specification_version: 4
254
174
  summary: Easily build jsonapi.org-compatible APIs for GraphDB
255
175
  test_files: []