rest-api-generator 0.1.6 → 0.1.7
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/Gemfile.lock +3 -1
- data/README.md +30 -0
- data/app/controllers/rest_api_generator/application_controller.rb +1 -0
- data/app/controllers/rest_api_generator/child_resource_controller.rb +8 -0
- data/app/controllers/rest_api_generator/resource_controller.rb +8 -0
- data/lib/rest_api_generator/config.rb +2 -1
- data/lib/rest_api_generator/version.rb +1 -1
- data/rest-api-generator.gemspec +1 -0
- metadata +16 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f7576268dec99ae0feafe5da3a552dae8d0609ccd244f5e62a99007e2f54090b
         | 
| 4 | 
            +
              data.tar.gz: 0f8a227490885ada7b83f1373c854857889e710b1d24285a81b45490308419a6
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 19bbdd850d24d6168fda588274287ad8645b255165487261dd6413420ab395fdc150675d97ed57ac6e2d395f2bf7cc5d48632f3b43bfe2a11f06964aae71b1d7
         | 
| 7 | 
            +
              data.tar.gz: 4653ea0a74f2377c9052eba66bb16230096598f5f3e5d52f42ff5ad5141b763b4054359c7bf360083d7e08b517249bf44b17a9a6e64765f51861961075068c65
         | 
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,8 +1,9 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                rest-api-generator (0.1. | 
| 4 | 
            +
                rest-api-generator (0.1.7)
         | 
| 5 5 | 
             
                  anyway_config (>= 2.0.0)
         | 
| 6 | 
            +
                  pagy
         | 
| 6 7 | 
             
                  rails (>= 5.0)
         | 
| 7 8 |  | 
| 8 9 | 
             
            GEM
         | 
| @@ -129,6 +130,7 @@ GEM | |
| 129 130 | 
             
                  racc (~> 1.4)
         | 
| 130 131 | 
             
                nokogiri (1.13.10-x86_64-linux)
         | 
| 131 132 | 
             
                  racc (~> 1.4)
         | 
| 133 | 
            +
                pagy (6.0.3)
         | 
| 132 134 | 
             
                parallel (1.22.1)
         | 
| 133 135 | 
             
                parser (3.1.3.0)
         | 
| 134 136 | 
             
                  ast (~> 2.4.1)
         | 
    
        data/README.md
    CHANGED
    
    | @@ -24,6 +24,7 @@ Following [Switch Dreams's](https://www.switchdreams.com.br/]) coding practices, | |
| 24 24 | 
             
            - :memo: [Automated documentation](#specsdocs)
         | 
| 25 25 | 
             
            - [Resource ordering](#ordering)
         | 
| 26 26 | 
             
            - [Resource filter](#filtering)
         | 
| 27 | 
            +
            - [Resource pagination](#pagination)
         | 
| 27 28 | 
             
            - [Configurable](#configuration)
         | 
| 28 29 |  | 
| 29 30 | 
             
            ## Next Features
         | 
| @@ -294,6 +295,34 @@ And It's done, you can filter your index end-point: | |
| 294 295 |  | 
| 295 296 | 
             
            - `GET /cars?color=blue or GET /cars?color=red&name=Ferrari`
         | 
| 296 297 |  | 
| 298 | 
            +
            ### Pagination
         | 
| 299 | 
            +
             | 
| 300 | 
            +
            For pagination, you need to create pagy initialializer file (pagy.rb) in the config directory of your project. Follow [pagy's example](https://ddnexus.github.io/pagy/quick-start/) for more information.
         | 
| 301 | 
            +
             | 
| 302 | 
            +
            Next, you should add some lines on top of the previously created pagy file:
         | 
| 303 | 
            +
             | 
| 304 | 
            +
            ```ruby
         | 
| 305 | 
            +
            # config/initializers/pagy.rb
         | 
| 306 | 
            +
            require "pagy"
         | 
| 307 | 
            +
            require "pagy/extras/headers"
         | 
| 308 | 
            +
            ```
         | 
| 309 | 
            +
             | 
| 310 | 
            +
            At last, change the pagination variable on RestApiGenerator initializer to true;
         | 
| 311 | 
            +
             | 
| 312 | 
            +
            ```rb
         | 
| 313 | 
            +
            # config/initializers/rest_api_generator.rb 
         | 
| 314 | 
            +
            config.pagination = true # default: false
         | 
| 315 | 
            +
            ```
         | 
| 316 | 
            +
             | 
| 317 | 
            +
            Note, if the parent controller is changed, it is necessary to include Pagy::Backend in the new parent.
         | 
| 318 | 
            +
             | 
| 319 | 
            +
            ```rb
         | 
| 320 | 
            +
            # new_parent_controller.rb 
         | 
| 321 | 
            +
            class NewParentController < ActionController::Base
         | 
| 322 | 
            +
              include Pagy::Backend
         | 
| 323 | 
            +
            end
         | 
| 324 | 
            +
            ```
         | 
| 325 | 
            +
             | 
| 297 326 | 
             
            ## Configuration
         | 
| 298 327 |  | 
| 299 328 | 
             
            You can override this gem configuration using the initializer or any other method from [anyway_config](https://github.com/palkan/anyway_config):
         | 
| @@ -305,6 +334,7 @@ RestApiGenerator.configure do |config| | |
| 305 334 | 
             
              config.test_path = "custom_test_dir/requests" # default: spec/requests
         | 
| 306 335 | 
             
              config.docs_path = "custom_docs_dir/rswag" # default: spec/docs
         | 
| 307 336 | 
             
              config.parent_class = "ApplicationController" # default: RestApiGenerator::ResourceController
         | 
| 337 | 
            +
              config.pagination = true # default: false
         | 
| 308 338 | 
             
            end
         | 
| 309 339 | 
             
            ```
         | 
| 310 340 |  | 
| @@ -11,6 +11,10 @@ module RestApiGenerator | |
| 11 11 | 
             
                  @resources = resources
         | 
| 12 12 | 
             
                  @resources = @resources.filter_resource(params_for_filter) if resource_class.include?(Filterable)
         | 
| 13 13 | 
             
                  @resources = @resources.order(ordering_params(params[:sort])) if params[:sort]
         | 
| 14 | 
            +
                  if pagination
         | 
| 15 | 
            +
                    @pagy, @resources = pagy(@resources)
         | 
| 16 | 
            +
                    pagy_headers_merge(@pagy)
         | 
| 17 | 
            +
                  end
         | 
| 14 18 | 
             
                  render json: @resources, status: :ok
         | 
| 15 19 | 
             
                end
         | 
| 16 20 |  | 
| @@ -93,5 +97,9 @@ module RestApiGenerator | |
| 93 97 | 
             
                def record_id
         | 
| 94 98 | 
             
                  params.permit(:id)[:id]
         | 
| 95 99 | 
             
                end
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                def pagination
         | 
| 102 | 
            +
                  RestApiGenerator.configuration.pagination
         | 
| 103 | 
            +
                end
         | 
| 96 104 | 
             
              end
         | 
| 97 105 | 
             
            end
         | 
| @@ -10,6 +10,10 @@ module RestApiGenerator | |
| 10 10 | 
             
                  @resources = resource_class.all
         | 
| 11 11 | 
             
                  @resources = @resources.filter_resource(params_for_filter) if resource_class.include?(Filterable)
         | 
| 12 12 | 
             
                  @resources = @resources.order(ordering_params(params[:sort])) if params[:sort]
         | 
| 13 | 
            +
                  if pagination
         | 
| 14 | 
            +
                    @pagy, @resources = pagy(@resources)
         | 
| 15 | 
            +
                    pagy_headers_merge(@pagy)
         | 
| 16 | 
            +
                  end
         | 
| 13 17 | 
             
                  render json: @resources, status: :ok
         | 
| 14 18 | 
             
                end
         | 
| 15 19 |  | 
| @@ -69,5 +73,9 @@ module RestApiGenerator | |
| 69 73 | 
             
                def record_id
         | 
| 70 74 | 
             
                  params.permit(:id)[:id]
         | 
| 71 75 | 
             
                end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                def pagination
         | 
| 78 | 
            +
                  RestApiGenerator.configuration.pagination
         | 
| 79 | 
            +
                end
         | 
| 72 80 | 
             
              end
         | 
| 73 81 | 
             
            end
         | 
    
        data/rest-api-generator.gemspec
    CHANGED
    
    | @@ -38,6 +38,7 @@ Gem::Specification.new do |spec| | |
| 38 38 | 
             
              spec.metadata["rubygems_mfa_required"] = "true"
         | 
| 39 39 |  | 
| 40 40 | 
             
              spec.add_dependency "anyway_config", ">= 2.0.0"
         | 
| 41 | 
            +
              spec.add_dependency "pagy"
         | 
| 41 42 | 
             
              spec.add_dependency "rails", ">= 5.0"
         | 
| 42 43 |  | 
| 43 44 | 
             
              spec.add_development_dependency "ammeter", "~> 1.1.5"
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rest-api-generator
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.7
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - PedroAugustoRamalhoDuarte
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2023-04- | 
| 11 | 
            +
            date: 2023-04-26 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: anyway_config
         | 
| @@ -24,6 +24,20 @@ dependencies: | |
| 24 24 | 
             
                - - ">="
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: 2.0.0
         | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: pagy
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - ">="
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: '0'
         | 
| 34 | 
            +
              type: :runtime
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - ">="
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: '0'
         | 
| 27 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 42 | 
             
              name: rails
         | 
| 29 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         |