Sha256: 6a7d360d6c12b72e3aa65b5cd02aca5182bd340770f590e81d39c776e2d39208

Contents?: true

Size: 1.11 KB

Versions: 25

Compression:

Stored size: 1.11 KB

Contents

module Graphiti::ActiveGraph
  module Util
    module RelationshipPayload
      def payload_for(sideload, relationship_payload)
        type = relationship_payload[:meta][:jsonapi_type]&.to_sym

        # For polymorphic *sideloads*, grab the correct child sideload
        if sideload.resource.type != type && sideload.type == :polymorphic_belongs_to
          sideload = sideload.child_for_type!(type)
        end

        # For polymorphic *resources*, grab the correct child resource
        resource = sideload.resource
        if resource.type != type && resource.polymorphic?
          resource = resource.class.resource_for_type(type).new
        end

        relationship_payload[:meta][:method] ||= :update

        {
          resource: resource,
          sideload: sideload,
          is_polymorphic: sideload.polymorphic_child?,
          primary_key: sideload.primary_key,
          foreign_key: sideload.foreign_key,
          attributes: relationship_payload[:attributes],
          meta: relationship_payload[:meta],
          relationships: relationship_payload[:relationships]
        }
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
graphiti-activegraph-1.0.0 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.2.0 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.26 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.25 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.24 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.23 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.22 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.21 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.20 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.19 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.18 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.17 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.16 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.15 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.14 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.13 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.12 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.11 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.10 lib/graphiti/active_graph/util/relationship_payload.rb
graphiti-activegraph-0.1.9 lib/graphiti/active_graph/util/relationship_payload.rb