From e0de65e0246600bf4df00c5a60db2a92cb6e89e3 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:02:27 -0400 Subject: [PATCH 01/33] Try to optionally use Graphiti --- lib/graphiti/railtie.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/graphiti/railtie.rb b/lib/graphiti/railtie.rb index e963808..37aa409 100644 --- a/lib/graphiti/railtie.rb +++ b/lib/graphiti/railtie.rb @@ -47,7 +47,7 @@ def register_parameter_parser def register_renderers ActiveSupport.on_load(:action_controller) do - ::ActionController::Renderers.add(:jsonapi) do |proxy, options| + ::ActionController::Renderers.add(:graphiti) do |proxy, options| self.content_type ||= Mime[:jsonapi] opts = {} From d584c9d901c7ec1f99112d49b6eefe76922eda05 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:04:54 -0400 Subject: [PATCH 02/33] Update railtie.rb --- lib/graphiti/railtie.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/graphiti/railtie.rb b/lib/graphiti/railtie.rb index 37aa409..c71c668 100644 --- a/lib/graphiti/railtie.rb +++ b/lib/graphiti/railtie.rb @@ -22,7 +22,7 @@ class Railtie < ::Rails::Railtie end if Mime[:jsonapi].nil? # rails 4 - Mime::Type.register('application/vnd.api+json', :jsonapi) + Mime::Type.register('application/vnd.api+json', :graphiti) end register_parameter_parser register_renderers From 615dfea7feacfc7052345cb3a68bade3b670fd6c Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:07:27 -0400 Subject: [PATCH 03/33] Update railtie.rb --- lib/graphiti/railtie.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/graphiti/railtie.rb b/lib/graphiti/railtie.rb index c71c668..483d4a5 100644 --- a/lib/graphiti/railtie.rb +++ b/lib/graphiti/railtie.rb @@ -33,22 +33,22 @@ class Railtie < ::Rails::Railtie # from jsonapi-rails PARSER = lambda do |body| data = JSON.parse(body) - data[:format] = :jsonapi + data[:format] = :graphiti data.with_indifferent_access end def register_parameter_parser if ::Rails::VERSION::MAJOR >= 5 - ActionDispatch::Request.parameter_parsers[:jsonapi] = PARSER + ActionDispatch::Request.parameter_parsers[:graphiti] = PARSER else - ActionDispatch::ParamsParser::DEFAULT_PARSERS[Mime[:jsonapi]] = PARSER + ActionDispatch::ParamsParser::DEFAULT_PARSERS[Mime[:graphiti]] = PARSER end end def register_renderers ActiveSupport.on_load(:action_controller) do ::ActionController::Renderers.add(:graphiti) do |proxy, options| - self.content_type ||= Mime[:jsonapi] + self.content_type ||= Mime[:graphiti] opts = {} if respond_to?(:default_jsonapi_render_options) @@ -65,7 +65,7 @@ def register_renderers ActiveSupport.on_load(:action_controller) do ::ActionController::Renderers.add(:jsonapi_errors) do |proxy, options| - self.content_type ||= Mime[:jsonapi] + self.content_type ||= Mime[:graphiti] validation = GraphitiErrors::Serializers::Validation.new \ proxy.data, proxy.payload.relationships From 57bf66a9755c3c09532ebf8241c7939e6459ffc6 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:09:35 -0400 Subject: [PATCH 04/33] Update railtie.rb --- lib/graphiti/railtie.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/graphiti/railtie.rb b/lib/graphiti/railtie.rb index 483d4a5..b1f8ad2 100644 --- a/lib/graphiti/railtie.rb +++ b/lib/graphiti/railtie.rb @@ -21,7 +21,7 @@ class Railtie < ::Rails::Railtie end end - if Mime[:jsonapi].nil? # rails 4 + if Mime[:graphiti].nil? # rails 4 Mime::Type.register('application/vnd.api+json', :graphiti) end register_parameter_parser @@ -64,7 +64,7 @@ def register_renderers end ActiveSupport.on_load(:action_controller) do - ::ActionController::Renderers.add(:jsonapi_errors) do |proxy, options| + ::ActionController::Renderers.add(:graphiti_errors) do |proxy, options| self.content_type ||= Mime[:graphiti] validation = GraphitiErrors::Serializers::Validation.new \ From 7708b825b153ca1bfa473e88d72835ed6a3fba09 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:12:46 -0400 Subject: [PATCH 05/33] Update jsonapi_serializable_ext.rb --- lib/graphiti/jsonapi_serializable_ext.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index c3d6081..721e7d3 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -35,9 +35,7 @@ def data end end - JSONAPI::Serializable::Relationship - .send(:prepend, RelationshipOverrides) - JSONAPI::Serializable::Renderer - .send(:prepend, RendererOverrides) +# JSONAPI::Serializable::Relationship.send(:prepend, RelationshipOverrides) +# JSONAPI::Serializable::Renderer.send(:prepend, RendererOverrides) end end From 9930576bea2ba9b2551a3f44837c2f7fbc6ec922 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:17:02 -0400 Subject: [PATCH 06/33] Update jsonapi_serializable_ext.rb --- lib/graphiti/jsonapi_serializable_ext.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index 721e7d3..96c174c 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -7,6 +7,7 @@ module JsonapiSerializableExt # To ensure we always render with the *resource* serializer module RendererOverrides def _build(object, exposures, klass) + puts "class name is #{klass}" resource = object.instance_variable_get(:@__graphiti_resource) klass = object.instance_variable_get(:@__graphiti_serializer) klass.new(exposures.merge(object: object, resource: resource)) From 9dafc6146e3f3463130308ab59f374e402c8c6a2 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:18:04 -0400 Subject: [PATCH 07/33] Update jsonapi_serializable_ext.rb --- lib/graphiti/jsonapi_serializable_ext.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index 96c174c..30f4ba7 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -36,7 +36,7 @@ def data end end -# JSONAPI::Serializable::Relationship.send(:prepend, RelationshipOverrides) -# JSONAPI::Serializable::Renderer.send(:prepend, RendererOverrides) + JSONAPI::Serializable::Relationship.send(:prepend, RelationshipOverrides) + JSONAPI::Serializable::Renderer.send(:prepend, RendererOverrides) end end From bf0edd5dfd0d87968ff4c4d00d98a99069ff4219 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:19:46 -0400 Subject: [PATCH 08/33] Update jsonapi_serializable_ext.rb --- lib/graphiti/jsonapi_serializable_ext.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index 30f4ba7..ea42bee 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -8,6 +8,7 @@ module JsonapiSerializableExt module RendererOverrides def _build(object, exposures, klass) puts "class name is #{klass}" + puts exposures.inspect resource = object.instance_variable_get(:@__graphiti_resource) klass = object.instance_variable_get(:@__graphiti_serializer) klass.new(exposures.merge(object: object, resource: resource)) From 21c29a10e76b8230dce095d08a19acaef0e9b88c Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:22:47 -0400 Subject: [PATCH 09/33] Update jsonapi_serializable_ext.rb --- lib/graphiti/jsonapi_serializable_ext.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index ea42bee..c9880d4 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -9,6 +9,7 @@ module RendererOverrides def _build(object, exposures, klass) puts "class name is #{klass}" puts exposures.inspect + puts "controller is #{self}" resource = object.instance_variable_get(:@__graphiti_resource) klass = object.instance_variable_get(:@__graphiti_serializer) klass.new(exposures.merge(object: object, resource: resource)) From 5d05d39043f58082b63ad856e33b062663d7f4c4 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:23:02 -0400 Subject: [PATCH 10/33] Update jsonapi_serializable_ext.rb --- lib/graphiti/jsonapi_serializable_ext.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index c9880d4..5c273aa 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -9,7 +9,7 @@ module RendererOverrides def _build(object, exposures, klass) puts "class name is #{klass}" puts exposures.inspect - puts "controller is #{self}" + puts "controller is #{self.class.name}" resource = object.instance_variable_get(:@__graphiti_resource) klass = object.instance_variable_get(:@__graphiti_serializer) klass.new(exposures.merge(object: object, resource: resource)) From a42b009c0aecbbf97a082bc8ea874416d1520851 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:32:47 -0400 Subject: [PATCH 11/33] Update jsonapi_serializable_ext.rb --- lib/graphiti/jsonapi_serializable_ext.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index 5c273aa..b1ac950 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -10,9 +10,14 @@ def _build(object, exposures, klass) puts "class name is #{klass}" puts exposures.inspect puts "controller is #{self.class.name}" - resource = object.instance_variable_get(:@__graphiti_resource) - klass = object.instance_variable_get(:@__graphiti_serializer) - klass.new(exposures.merge(object: object, resource: resource)) + + if klass.values.any? + klass[object.class.name.to_sym].new(exposures.merge(object: object)) + else + resource = object.instance_variable_get(:@__graphiti_resource) + klass = object.instance_variable_get(:@__graphiti_serializer) + klass.new(exposures.merge(object: object, resource: resource)) + end end end From b6305d1776385cd38f7f8ecb9b36b08507d8ea4a Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:35:44 -0400 Subject: [PATCH 12/33] Update jsonapi_serializable_ext.rb --- lib/graphiti/jsonapi_serializable_ext.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index b1ac950..f64cabd 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -6,11 +6,7 @@ module JsonapiSerializableExt # Instead, this variable is assigned when the query is resolved # To ensure we always render with the *resource* serializer module RendererOverrides - def _build(object, exposures, klass) - puts "class name is #{klass}" - puts exposures.inspect - puts "controller is #{self.class.name}" - + def _build(object, exposures, klass) if klass.values.any? klass[object.class.name.to_sym].new(exposures.merge(object: object)) else From b09365cc6eb96fce07536d350d9da6afc4cf2256 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:02:27 -0400 Subject: [PATCH 13/33] Try to optionally use Graphiti --- lib/graphiti/railtie.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/graphiti/railtie.rb b/lib/graphiti/railtie.rb index e963808..37aa409 100644 --- a/lib/graphiti/railtie.rb +++ b/lib/graphiti/railtie.rb @@ -47,7 +47,7 @@ def register_parameter_parser def register_renderers ActiveSupport.on_load(:action_controller) do - ::ActionController::Renderers.add(:jsonapi) do |proxy, options| + ::ActionController::Renderers.add(:graphiti) do |proxy, options| self.content_type ||= Mime[:jsonapi] opts = {} From f6301528ea244f1a417088064bf056d1a7b6aa49 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:04:54 -0400 Subject: [PATCH 14/33] Update railtie.rb --- lib/graphiti/railtie.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/graphiti/railtie.rb b/lib/graphiti/railtie.rb index 37aa409..c71c668 100644 --- a/lib/graphiti/railtie.rb +++ b/lib/graphiti/railtie.rb @@ -22,7 +22,7 @@ class Railtie < ::Rails::Railtie end if Mime[:jsonapi].nil? # rails 4 - Mime::Type.register('application/vnd.api+json', :jsonapi) + Mime::Type.register('application/vnd.api+json', :graphiti) end register_parameter_parser register_renderers From 64b00f1128da9942476e9c28019a71a00ca316d0 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:07:27 -0400 Subject: [PATCH 15/33] Update railtie.rb --- lib/graphiti/railtie.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/graphiti/railtie.rb b/lib/graphiti/railtie.rb index c71c668..483d4a5 100644 --- a/lib/graphiti/railtie.rb +++ b/lib/graphiti/railtie.rb @@ -33,22 +33,22 @@ class Railtie < ::Rails::Railtie # from jsonapi-rails PARSER = lambda do |body| data = JSON.parse(body) - data[:format] = :jsonapi + data[:format] = :graphiti data.with_indifferent_access end def register_parameter_parser if ::Rails::VERSION::MAJOR >= 5 - ActionDispatch::Request.parameter_parsers[:jsonapi] = PARSER + ActionDispatch::Request.parameter_parsers[:graphiti] = PARSER else - ActionDispatch::ParamsParser::DEFAULT_PARSERS[Mime[:jsonapi]] = PARSER + ActionDispatch::ParamsParser::DEFAULT_PARSERS[Mime[:graphiti]] = PARSER end end def register_renderers ActiveSupport.on_load(:action_controller) do ::ActionController::Renderers.add(:graphiti) do |proxy, options| - self.content_type ||= Mime[:jsonapi] + self.content_type ||= Mime[:graphiti] opts = {} if respond_to?(:default_jsonapi_render_options) @@ -65,7 +65,7 @@ def register_renderers ActiveSupport.on_load(:action_controller) do ::ActionController::Renderers.add(:jsonapi_errors) do |proxy, options| - self.content_type ||= Mime[:jsonapi] + self.content_type ||= Mime[:graphiti] validation = GraphitiErrors::Serializers::Validation.new \ proxy.data, proxy.payload.relationships From 9d7b0729b06b3c70d00a22fd9c3b7fc367b51ae1 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:09:35 -0400 Subject: [PATCH 16/33] Update railtie.rb --- lib/graphiti/railtie.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/graphiti/railtie.rb b/lib/graphiti/railtie.rb index 483d4a5..b1f8ad2 100644 --- a/lib/graphiti/railtie.rb +++ b/lib/graphiti/railtie.rb @@ -21,7 +21,7 @@ class Railtie < ::Rails::Railtie end end - if Mime[:jsonapi].nil? # rails 4 + if Mime[:graphiti].nil? # rails 4 Mime::Type.register('application/vnd.api+json', :graphiti) end register_parameter_parser @@ -64,7 +64,7 @@ def register_renderers end ActiveSupport.on_load(:action_controller) do - ::ActionController::Renderers.add(:jsonapi_errors) do |proxy, options| + ::ActionController::Renderers.add(:graphiti_errors) do |proxy, options| self.content_type ||= Mime[:graphiti] validation = GraphitiErrors::Serializers::Validation.new \ From 3c3eeed619ad4f0d1e1378c9fd8856a0ac544f03 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:12:46 -0400 Subject: [PATCH 17/33] Update jsonapi_serializable_ext.rb --- lib/graphiti/jsonapi_serializable_ext.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index c3d6081..721e7d3 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -35,9 +35,7 @@ def data end end - JSONAPI::Serializable::Relationship - .send(:prepend, RelationshipOverrides) - JSONAPI::Serializable::Renderer - .send(:prepend, RendererOverrides) +# JSONAPI::Serializable::Relationship.send(:prepend, RelationshipOverrides) +# JSONAPI::Serializable::Renderer.send(:prepend, RendererOverrides) end end From d05f5024ee838f251b9fddd69080aec1c4892214 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:17:02 -0400 Subject: [PATCH 18/33] Update jsonapi_serializable_ext.rb --- lib/graphiti/jsonapi_serializable_ext.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index 721e7d3..96c174c 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -7,6 +7,7 @@ module JsonapiSerializableExt # To ensure we always render with the *resource* serializer module RendererOverrides def _build(object, exposures, klass) + puts "class name is #{klass}" resource = object.instance_variable_get(:@__graphiti_resource) klass = object.instance_variable_get(:@__graphiti_serializer) klass.new(exposures.merge(object: object, resource: resource)) From 28a93c41da5b5073262f25c66497be379188a222 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:18:04 -0400 Subject: [PATCH 19/33] Update jsonapi_serializable_ext.rb --- lib/graphiti/jsonapi_serializable_ext.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index 96c174c..30f4ba7 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -36,7 +36,7 @@ def data end end -# JSONAPI::Serializable::Relationship.send(:prepend, RelationshipOverrides) -# JSONAPI::Serializable::Renderer.send(:prepend, RendererOverrides) + JSONAPI::Serializable::Relationship.send(:prepend, RelationshipOverrides) + JSONAPI::Serializable::Renderer.send(:prepend, RendererOverrides) end end From 309e51a92d83401392d31f627b65e9cf40357e7b Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:19:46 -0400 Subject: [PATCH 20/33] Update jsonapi_serializable_ext.rb --- lib/graphiti/jsonapi_serializable_ext.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index 30f4ba7..ea42bee 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -8,6 +8,7 @@ module JsonapiSerializableExt module RendererOverrides def _build(object, exposures, klass) puts "class name is #{klass}" + puts exposures.inspect resource = object.instance_variable_get(:@__graphiti_resource) klass = object.instance_variable_get(:@__graphiti_serializer) klass.new(exposures.merge(object: object, resource: resource)) From d12d353a5ecabaf4e1522e046e26b7347d875907 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:22:47 -0400 Subject: [PATCH 21/33] Update jsonapi_serializable_ext.rb --- lib/graphiti/jsonapi_serializable_ext.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index ea42bee..c9880d4 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -9,6 +9,7 @@ module RendererOverrides def _build(object, exposures, klass) puts "class name is #{klass}" puts exposures.inspect + puts "controller is #{self}" resource = object.instance_variable_get(:@__graphiti_resource) klass = object.instance_variable_get(:@__graphiti_serializer) klass.new(exposures.merge(object: object, resource: resource)) From 0c9b5897eae82c18a3b812ff82e39f8231dda4c5 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:23:02 -0400 Subject: [PATCH 22/33] Update jsonapi_serializable_ext.rb --- lib/graphiti/jsonapi_serializable_ext.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index c9880d4..5c273aa 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -9,7 +9,7 @@ module RendererOverrides def _build(object, exposures, klass) puts "class name is #{klass}" puts exposures.inspect - puts "controller is #{self}" + puts "controller is #{self.class.name}" resource = object.instance_variable_get(:@__graphiti_resource) klass = object.instance_variable_get(:@__graphiti_serializer) klass.new(exposures.merge(object: object, resource: resource)) From 94b4437a1ec6b9cba8e722707369c51bab4a19ca Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:32:47 -0400 Subject: [PATCH 23/33] Update jsonapi_serializable_ext.rb --- lib/graphiti/jsonapi_serializable_ext.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index 5c273aa..b1ac950 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -10,9 +10,14 @@ def _build(object, exposures, klass) puts "class name is #{klass}" puts exposures.inspect puts "controller is #{self.class.name}" - resource = object.instance_variable_get(:@__graphiti_resource) - klass = object.instance_variable_get(:@__graphiti_serializer) - klass.new(exposures.merge(object: object, resource: resource)) + + if klass.values.any? + klass[object.class.name.to_sym].new(exposures.merge(object: object)) + else + resource = object.instance_variable_get(:@__graphiti_resource) + klass = object.instance_variable_get(:@__graphiti_serializer) + klass.new(exposures.merge(object: object, resource: resource)) + end end end From 45b50af3d8c479b6c97017c1f889e50568077e7a Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Fri, 2 Nov 2018 10:35:44 -0400 Subject: [PATCH 24/33] Update jsonapi_serializable_ext.rb --- lib/graphiti/jsonapi_serializable_ext.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index b1ac950..f64cabd 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -6,11 +6,7 @@ module JsonapiSerializableExt # Instead, this variable is assigned when the query is resolved # To ensure we always render with the *resource* serializer module RendererOverrides - def _build(object, exposures, klass) - puts "class name is #{klass}" - puts exposures.inspect - puts "controller is #{self.class.name}" - + def _build(object, exposures, klass) if klass.values.any? klass[object.class.name.to_sym].new(exposures.merge(object: object)) else From 9cd6908fd618e66caa0654abb04f5ab30b334ce5 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Sun, 9 Dec 2018 15:04:24 -0500 Subject: [PATCH 25/33] debugging --- lib/graphiti/jsonapi_serializable_ext.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index f64cabd..02a8a20 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -6,10 +6,12 @@ module JsonapiSerializableExt # Instead, this variable is assigned when the query is resolved # To ensure we always render with the *resource* serializer module RendererOverrides - def _build(object, exposures, klass) + def _build(object, exposures, klass) + puts exposures + if klass.values.any? klass[object.class.name.to_sym].new(exposures.merge(object: object)) - else + else resource = object.instance_variable_get(:@__graphiti_resource) klass = object.instance_variable_get(:@__graphiti_serializer) klass.new(exposures.merge(object: object, resource: resource)) @@ -39,7 +41,7 @@ def data end end - JSONAPI::Serializable::Relationship.send(:prepend, RelationshipOverrides) - JSONAPI::Serializable::Renderer.send(:prepend, RendererOverrides) + JSONAPI::Serializable::Relationship.send(:include, RelationshipOverrides) + JSONAPI::Serializable::Renderer.send(:include, RendererOverrides) end end From 06948a981781851f677cbcfea04fd9a03e2763ad Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Mon, 10 Dec 2018 10:30:11 -0500 Subject: [PATCH 26/33] working through bugs --- lib/graphiti/jsonapi_serializable_ext.rb | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index 02a8a20..6a85cf8 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -8,14 +8,9 @@ module JsonapiSerializableExt module RendererOverrides def _build(object, exposures, klass) puts exposures - - if klass.values.any? - klass[object.class.name.to_sym].new(exposures.merge(object: object)) - else - resource = object.instance_variable_get(:@__graphiti_resource) - klass = object.instance_variable_get(:@__graphiti_serializer) - klass.new(exposures.merge(object: object, resource: resource)) - end + resource = object.instance_variable_get(:@__graphiti_resource) + klass = object.instance_variable_get(:@__graphiti_serializer) + klass.new(exposures.merge(object: object, resource: resource)) end end From fc0bebb87413a9bdb79d0e71c75c6e416c9290ce Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Mon, 10 Dec 2018 10:33:06 -0500 Subject: [PATCH 27/33] reverting changes --- lib/graphiti/jsonapi_serializable_ext.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index 6a85cf8..9e15078 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -36,7 +36,7 @@ def data end end - JSONAPI::Serializable::Relationship.send(:include, RelationshipOverrides) - JSONAPI::Serializable::Renderer.send(:include, RendererOverrides) + JSONAPI::Serializable::Relationship.send(:prepend, RelationshipOverrides) + JSONAPI::Serializable::Renderer.send(:prepend, RendererOverrides) end end From d2b87e33bfed87074a71b9be63c2a4ae54b3200d Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Mon, 10 Dec 2018 10:53:17 -0500 Subject: [PATCH 28/33] working through compatibility --- lib/graphiti/jsonapi_serializable_ext.rb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index 9e15078..9ad4462 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -9,8 +9,13 @@ module RendererOverrides def _build(object, exposures, klass) puts exposures resource = object.instance_variable_get(:@__graphiti_resource) - klass = object.instance_variable_get(:@__graphiti_serializer) - klass.new(exposures.merge(object: object, resource: resource)) + + if resource.present? + klass = object.instance_variable_get(:@__graphiti_serializer) + klass.new(exposures.merge(object: object, resource: resource)) + else + super(object, exposures, klass) + end end end @@ -36,7 +41,7 @@ def data end end - JSONAPI::Serializable::Relationship.send(:prepend, RelationshipOverrides) - JSONAPI::Serializable::Renderer.send(:prepend, RendererOverrides) + JSONAPI::Serializable::Relationship.send(:include, RelationshipOverrides) + JSONAPI::Serializable::Renderer.send(:include, RendererOverrides) end end From 4a60843cd14df91abb791fe24c72d3399d93e75e Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Mon, 10 Dec 2018 10:57:56 -0500 Subject: [PATCH 29/33] maybe prepend is the direction we want to go --- lib/graphiti/jsonapi_serializable_ext.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index 9ad4462..bd1aee0 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -42,6 +42,6 @@ def data end JSONAPI::Serializable::Relationship.send(:include, RelationshipOverrides) - JSONAPI::Serializable::Renderer.send(:include, RendererOverrides) + JSONAPI::Serializable::Renderer.send(:prepend, RendererOverrides) end end From 0750f1153d1d5134254be26999223d414643185a Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Mon, 10 Dec 2018 14:09:04 -0500 Subject: [PATCH 30/33] add debug info --- lib/graphiti/jsonapi_serializable_ext.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index bd1aee0..b7876c9 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -24,6 +24,8 @@ module RelationshipOverrides def data @_resources_block = proc do resources = yield + puts "RESOURCES: #{resources.inspect}" + if resources.nil? nil elsif resources.respond_to?(:to_ary) @@ -41,7 +43,7 @@ def data end end - JSONAPI::Serializable::Relationship.send(:include, RelationshipOverrides) + JSONAPI::Serializable::Relationship.send(:prepend, RelationshipOverrides) JSONAPI::Serializable::Renderer.send(:prepend, RendererOverrides) end end From a167a76fa6eba6f4a3f73555ea01658da81b4eb5 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Mon, 10 Dec 2018 14:13:27 -0500 Subject: [PATCH 31/33] pry debugging --- lib/graphiti/jsonapi_serializable_ext.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index b7876c9..c714003 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -24,7 +24,7 @@ module RelationshipOverrides def data @_resources_block = proc do resources = yield - puts "RESOURCES: #{resources.inspect}" + binding.pry if resources.nil? nil From 64051af3c57b24ddf23829150a8462491124f859 Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Mon, 10 Dec 2018 14:28:41 -0500 Subject: [PATCH 32/33] work around JSONAPI-RAILS --- lib/graphiti/jsonapi_serializable_ext.rb | 48 +++++++++++++++++------- 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index c714003..13b5199 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -1,3 +1,7 @@ +# This patch is necessary in order to support V1 of the API using JSONAPI-RAILS +# while supporting V2 using Graphiti. +# TODO: Remove this class when we no longer support V1 of the API + module Graphiti module JsonapiSerializableExt # This library looks up a serializer based on the record's class name @@ -7,7 +11,6 @@ module JsonapiSerializableExt # To ensure we always render with the *resource* serializer module RendererOverrides def _build(object, exposures, klass) - puts exposures resource = object.instance_variable_get(:@__graphiti_resource) if resource.present? @@ -24,21 +27,40 @@ module RelationshipOverrides def data @_resources_block = proc do resources = yield - binding.pry - if resources.nil? - nil - elsif resources.respond_to?(:to_ary) - Array(resources).map do |obj| - klass = obj.instance_variable_get(:@__graphiti_serializer) - resource = obj.instance_variable_get(:@__graphiti_resource) - klass.new(@_exposures.merge(object: obj, resource: resource)) - end + if resources.nil? || Array(resources)[0].instance_variable_get(:@__graphiti_resource) + graphiti_data(resources) else - klass = resources.instance_variable_get(:@__graphiti_serializer) - resource = resources.instance_variable_get(:@__graphiti_resource) - klass.new(@_exposures.merge(object: resources, resource: resource)) + jsonapi_data(resources) + end + end + end + + def graphiti_data(resources) + if resources.nil? + nil + elsif resources.respond_to?(:to_ary) + Array(resources).map do |obj| + klass = obj.instance_variable_get(:@__graphiti_serializer) + resource = obj.instance_variable_get(:@__graphiti_resource) + klass.new(@_exposures.merge(object: obj, resource: resource)) end + else + klass = resources.instance_variable_get(:@__graphiti_serializer) + resource = resources.instance_variable_get(:@__graphiti_resource) + klass.new(@_exposures.merge(object: resources, resource: resource)) + end + end + + def jsonapi_data(resources) + if resources.nil? + nil + elsif resources.respond_to?(:to_ary) + Array(resources).map do |obj| + @_class[obj.class.name.to_sym].new(@_exposures.merge(object: obj)) + end + else + @_class[resources.class.name.to_sym].new(@_exposures.merge(object: resources)) end end end From 37e7d1e7b6fe513e1c231daa65f2530144e5679e Mon Sep 17 00:00:00 2001 From: Casey Provost Date: Mon, 10 Dec 2018 14:31:45 -0500 Subject: [PATCH 33/33] remove comments --- lib/graphiti/jsonapi_serializable_ext.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/graphiti/jsonapi_serializable_ext.rb b/lib/graphiti/jsonapi_serializable_ext.rb index 13b5199..05e0697 100644 --- a/lib/graphiti/jsonapi_serializable_ext.rb +++ b/lib/graphiti/jsonapi_serializable_ext.rb @@ -1,7 +1,3 @@ -# This patch is necessary in order to support V1 of the API using JSONAPI-RAILS -# while supporting V2 using Graphiti. -# TODO: Remove this class when we no longer support V1 of the API - module Graphiti module JsonapiSerializableExt # This library looks up a serializer based on the record's class name