graphiti 1.0.2 → 1.0.3
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 +12 -0
- data/gemfiles/rails_6.gemfile +1 -1
- data/lib/graphiti/errors.rb +22 -0
- data/lib/graphiti/scoping/default_filter.rb +1 -1
- data/lib/graphiti/scoping/filter.rb +1 -1
- data/lib/graphiti/scoping/paginate.rb +1 -1
- data/lib/graphiti/scoping/sort.rb +1 -1
- data/lib/graphiti/sideload/polymorphic_belongs_to.rb +9 -0
- data/lib/graphiti/util/relationship_payload.rb +1 -1
- data/lib/graphiti/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 501d03b06258694566979a6f54104d8da41a44ab6dadec078e7b84ef047de364
         | 
| 4 | 
            +
              data.tar.gz: cb85e65ffb73f9294cd0173eee9a0f2e8239697dac1a83adbe58a2faf9c6cbe9
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 917d60f26882a2efbcebcf80279aa624b795628d6ad6fdc201dd8c4511e3a7caf6979fbf24c870aa176827dfe7daeffef0a1b5e5e73cec8d83bec98761ad1a9f
         | 
| 7 | 
            +
              data.tar.gz: 1028dc0fe60eb8b4b54f119ccb12308390ff849c48047f6597e4149dbf6123aae296299d231fde9fa3469c023d7caa86b9e5ce334dc079547932ba886512e38e
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,10 @@ | |
| 1 | 
            +
            ## 1.0.3
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Fixes:
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            - [#130](https://github.com/graphiti-api/graphiti/pull/130) Run query
         | 
| 6 | 
            +
              blocks in resource context.
         | 
| 7 | 
            +
             | 
| 1 8 | 
             
            ## 1.0.2
         | 
| 2 9 |  | 
| 3 10 | 
             
            Fixes:
         | 
| @@ -13,6 +20,11 @@ Fixes: | |
| 13 20 |  | 
| 14 21 | 
             
            ### master (unreleased)
         | 
| 15 22 |  | 
| 23 | 
            +
            Misc:
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            - [#123](https://github.com/graphiti-api/graphiti/pull/123) Throw
         | 
| 26 | 
            +
              better error when polymorphic type not found.
         | 
| 27 | 
            +
             | 
| 16 28 | 
             
            <!-- ### [version (YYYY-MM-DD)](diff_link) -->
         | 
| 17 29 | 
             
            <!-- Breaking changes:-->
         | 
| 18 30 | 
             
            <!-- Features:-->
         | 
    
        data/gemfiles/rails_6.gemfile
    CHANGED
    
    
    
        data/lib/graphiti/errors.rb
    CHANGED
    
    | @@ -561,6 +561,28 @@ module Graphiti | |
| 561 561 | 
             
                  end
         | 
| 562 562 | 
             
                end
         | 
| 563 563 |  | 
| 564 | 
            +
                class PolymorphicSideloadTypeNotFound < Base
         | 
| 565 | 
            +
                  def initialize(sideload, name)
         | 
| 566 | 
            +
                    @sideload = sideload
         | 
| 567 | 
            +
                    @name = name
         | 
| 568 | 
            +
                  end
         | 
| 569 | 
            +
             | 
| 570 | 
            +
                  def message
         | 
| 571 | 
            +
                    <<~MSG
         | 
| 572 | 
            +
                      #{@sideload.parent_resource}: Tried to find a Resource with type '#{@name.inspect}', but did not find one!
         | 
| 573 | 
            +
             | 
| 574 | 
            +
                      This is because either a Resource with that type doesn't exist, or it's not registered on the sideload. The below example shows how to register a Resource with this sideload. Make sure one of the registered Resources has type '#{@name.inspect}'
         | 
| 575 | 
            +
             | 
| 576 | 
            +
                      polymorphic_belongs_to #{@sideload.name.inspect} do
         | 
| 577 | 
            +
                        group_by(#{@sideload.grouper.field_name.inspect}) do
         | 
| 578 | 
            +
                          on(:foo)
         | 
| 579 | 
            +
                          on(:foo).belongs_to :foo, resource: FooResource # (long-hand example)
         | 
| 580 | 
            +
                        end
         | 
| 581 | 
            +
                      end
         | 
| 582 | 
            +
                    MSG
         | 
| 583 | 
            +
                  end
         | 
| 584 | 
            +
                end
         | 
| 585 | 
            +
             | 
| 564 586 | 
             
                class PolymorphicSideloadChildNotFound < Base
         | 
| 565 587 | 
             
                  def initialize(sideload, name)
         | 
| 566 588 | 
             
                    @sideload = sideload
         | 
| @@ -38,7 +38,7 @@ module Graphiti | |
| 38 38 | 
             
                def apply
         | 
| 39 39 | 
             
                  resource.default_filters.each_pair do |name, opts|
         | 
| 40 40 | 
             
                    next if overridden?(name)
         | 
| 41 | 
            -
                    @scope =  | 
| 41 | 
            +
                    @scope = resource.instance_exec(@scope, resource.context, &opts[:filter])
         | 
| 42 42 | 
             
                  end
         | 
| 43 43 |  | 
| 44 44 | 
             
                  @scope
         | 
| @@ -23,7 +23,7 @@ module Graphiti | |
| 23 23 |  | 
| 24 24 | 
             
                def filter_scope(filter, operator, value)
         | 
| 25 25 | 
             
                  if (custom_scope = filter.values[0][:operators][operator])
         | 
| 26 | 
            -
                     | 
| 26 | 
            +
                    @resource.instance_exec(@scope, value, resource.context, &custom_scope)
         | 
| 27 27 | 
             
                  else
         | 
| 28 28 | 
             
                    filter_via_adapter(filter, operator, value)
         | 
| 29 29 | 
             
                  end
         | 
| @@ -99,6 +99,15 @@ class Graphiti::Sideload::PolymorphicBelongsTo < Graphiti::Sideload::BelongsTo | |
| 99 99 | 
             
                end
         | 
| 100 100 | 
             
              end
         | 
| 101 101 |  | 
| 102 | 
            +
              def child_for_type!(type)
         | 
| 103 | 
            +
                if (child = child_for_type(type))
         | 
| 104 | 
            +
                  child
         | 
| 105 | 
            +
                else
         | 
| 106 | 
            +
                  err = ::Graphiti::Errors::PolymorphicSideloadTypeNotFound
         | 
| 107 | 
            +
                  raise err.new(self, type)
         | 
| 108 | 
            +
                end
         | 
| 109 | 
            +
              end
         | 
| 110 | 
            +
             | 
| 102 111 | 
             
              def resolve(parents, query, graph_parent)
         | 
| 103 112 | 
             
                parents.group_by(&grouper.field_name).each_pair do |group_name, group|
         | 
| 104 113 | 
             
                  next if group_name.nil? || grouper.ignore?(group_name)
         | 
| @@ -47,7 +47,7 @@ module Graphiti | |
| 47 47 |  | 
| 48 48 | 
             
                    # For polymorphic *sideloads*, grab the correct child sideload
         | 
| 49 49 | 
             
                    if sideload.resource.type != type && sideload.type == :polymorphic_belongs_to
         | 
| 50 | 
            -
                      sideload = sideload.child_for_type(type)
         | 
| 50 | 
            +
                      sideload = sideload.child_for_type!(type)
         | 
| 51 51 | 
             
                    end
         | 
| 52 52 |  | 
| 53 53 | 
             
                    # For polymorphic *resources*, grab the correct child resource
         | 
    
        data/lib/graphiti/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: graphiti
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0. | 
| 4 | 
            +
              version: 1.0.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Lee Richmond
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019-04- | 
| 11 | 
            +
            date: 2019-04-25 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: jsonapi-serializable
         |