graphql-rails-api 0.9.7 → 0.9.81
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/README.md +0 -18
 - data/lib/generators/auth0_authentication/auth0_authentication_generator.rb +4 -0
 - data/lib/generators/graphql_add_fields/graphql_add_fields_generator.rb +36 -38
 - data/lib/generators/graphql_rails_api/install_generator.rb +160 -162
 - data/lib/graphql/hydrate_query.rb +9 -4
 - data/lib/graphql/rails/api/version.rb +1 -1
 - metadata +4 -7
 - data/lib/generators/graphql_all_connections/graphql_all_connections_generator.rb +0 -26
 - data/lib/generators/graphql_mutations/graphql_bulk_create_mutations_generator.rb +0 -30
 - data/lib/generators/graphql_mutations/graphql_bulk_update_mutations_generator.rb +0 -30
 - data/lib/generators/graphql_mutations/graphql_mutations_generator.rb +0 -92
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 8e25a943a7609957c2c0123c9efcb11a27b3e64f9aa37aac30d56f82708701e0
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 72659ad6d0ff3153c06e05a2c21372e5c5d35638080ebfa3fd4a593f0648da9e
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 969746c3f12d8af1f56f3b7128cfb9159b7ca7dd8bad48d0087251559e81ca744b3f2f2d86c945cd6e51acf6be70b457a2f872dcc0a080629d2241509a32faa5
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: b300ba36e35a32764551722d6d85d790a6242c528edbae0d54272f3857a557354b2c3ca3faa4127ff783626e9f2792f0d5c106f95581d7a894bcc8d35e18854e
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -227,24 +227,6 @@ mutation($id: String!) { 
     | 
|
| 
       227 
227 
     | 
    
         
             
            }
         
     | 
| 
       228 
228 
     | 
    
         
             
            ```
         
     | 
| 
       229 
229 
     | 
    
         | 
| 
       230 
     | 
    
         
            -
            bulk_create mutation:
         
     | 
| 
       231 
     | 
    
         
            -
            ```gql
         
     | 
| 
       232 
     | 
    
         
            -
            mutation($cities: [CityInputType]!) {
         
     | 
| 
       233 
     | 
    
         
            -
              bulk_create_city(cities: $cities) {
         
     | 
| 
       234 
     | 
    
         
            -
                id
         
     | 
| 
       235 
     | 
    
         
            -
              }
         
     | 
| 
       236 
     | 
    
         
            -
            }
         
     | 
| 
       237 
     | 
    
         
            -
            ```
         
     | 
| 
       238 
     | 
    
         
            -
             
     | 
| 
       239 
     | 
    
         
            -
            bulk_update:
         
     | 
| 
       240 
     | 
    
         
            -
            ```gql
         
     | 
| 
       241 
     | 
    
         
            -
            mutation($cities: [CityInputType]!) {
         
     | 
| 
       242 
     | 
    
         
            -
              bulk_update_city(cities: $cities) {
         
     | 
| 
       243 
     | 
    
         
            -
                id
         
     | 
| 
       244 
     | 
    
         
            -
              }
         
     | 
| 
       245 
     | 
    
         
            -
            }
         
     | 
| 
       246 
     | 
    
         
            -
            ```
         
     | 
| 
       247 
     | 
    
         
            -
             
     | 
| 
       248 
230 
     | 
    
         
             
            You can override the default application service for all mutation by defining your own method into the corresponding graphql service:
         
     | 
| 
       249 
231 
     | 
    
         | 
| 
       250 
232 
     | 
    
         
             
            Example:
         
     | 
| 
         @@ -1,20 +1,19 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            class GraphqlAddFieldsGenerator < Rails::Generators::NamedBase
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
2 
     | 
    
         
             
              %i[
         
     | 
| 
       4 
3 
     | 
    
         
             
                migration model mutations service graphql_input_type
         
     | 
| 
       5 
     | 
    
         
            -
                graphql_type propagation  
     | 
| 
      
 4 
     | 
    
         
            +
                graphql_type propagation migrate
         
     | 
| 
       6 
5 
     | 
    
         
             
              ].each do |opt|
         
     | 
| 
       7 
6 
     | 
    
         
             
                class_option(opt, type: :boolean, default: true)
         
     | 
| 
       8 
7 
     | 
    
         
             
              end
         
     | 
| 
       9 
8 
     | 
    
         | 
| 
       10 
9 
     | 
    
         
             
              TYPES_MAPPING = {
         
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
       12 
     | 
    
         
            -
                 
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
       14 
     | 
    
         
            -
                 
     | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
       16 
     | 
    
         
            -
                 
     | 
| 
       17 
     | 
    
         
            -
                 
     | 
| 
      
 10 
     | 
    
         
            +
                "id" => "String",
         
     | 
| 
      
 11 
     | 
    
         
            +
                "uuid" => "String",
         
     | 
| 
      
 12 
     | 
    
         
            +
                "boolean" => "Boolean",
         
     | 
| 
      
 13 
     | 
    
         
            +
                "float" => "Float",
         
     | 
| 
      
 14 
     | 
    
         
            +
                "decimal" => "Float",
         
     | 
| 
      
 15 
     | 
    
         
            +
                "integer" => "Integer",
         
     | 
| 
      
 16 
     | 
    
         
            +
                "bigint" => "Integer"
         
     | 
| 
       18 
17 
     | 
    
         
             
              }.freeze
         
     | 
| 
       19 
18 
     | 
    
         | 
| 
       20 
19 
     | 
    
         
             
              def create_graphql_files
         
     | 
| 
         @@ -41,7 +40,7 @@ class GraphqlAddFieldsGenerator < Rails::Generators::NamedBase 
     | 
|
| 
       41 
40 
     | 
    
         
             
              private
         
     | 
| 
       42 
41 
     | 
    
         | 
| 
       43 
42 
     | 
    
         
             
              def types_mapping(type)
         
     | 
| 
       44 
     | 
    
         
            -
                TYPES_MAPPING[type] ||  
     | 
| 
      
 43 
     | 
    
         
            +
                TYPES_MAPPING[type] || "String"
         
     | 
| 
       45 
44 
     | 
    
         
             
              end
         
     | 
| 
       46 
45 
     | 
    
         | 
| 
       47 
46 
     | 
    
         
             
              def complete_graphql_input_type
         
     | 
| 
         @@ -57,8 +56,8 @@ class GraphqlAddFieldsGenerator < Rails::Generators::NamedBase 
     | 
|
| 
       57 
56 
     | 
    
         
             
              end
         
     | 
| 
       58 
57 
     | 
    
         | 
| 
       59 
58 
     | 
    
         
             
              def parse_args
         
     | 
| 
       60 
     | 
    
         
            -
                @id_db_type =  
     | 
| 
       61 
     | 
    
         
            -
                @id_type =  
     | 
| 
      
 59 
     | 
    
         
            +
                @id_db_type = "uuid"
         
     | 
| 
      
 60 
     | 
    
         
            +
                @id_type = "String"
         
     | 
| 
       62 
61 
     | 
    
         | 
| 
       63 
62 
     | 
    
         
             
                @resource = file_name.singularize
         
     | 
| 
       64 
63 
     | 
    
         
             
                @has_many = []
         
     | 
| 
         @@ -67,23 +66,23 @@ class GraphqlAddFieldsGenerator < Rails::Generators::NamedBase 
     | 
|
| 
       67 
66 
     | 
    
         
             
                @belongs_to_fields = {}
         
     | 
| 
       68 
67 
     | 
    
         | 
| 
       69 
68 
     | 
    
         
             
                @args = args.each_with_object({}) do |f, hash|
         
     | 
| 
       70 
     | 
    
         
            -
                  next if f.split( 
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
                  case f.split( 
     | 
| 
       73 
     | 
    
         
            -
                  when  
     | 
| 
       74 
     | 
    
         
            -
                    hash["#{f.split( 
     | 
| 
       75 
     | 
    
         
            -
                    @belongs_to_fields["#{f.split( 
     | 
| 
       76 
     | 
    
         
            -
                  when  
     | 
| 
       77 
     | 
    
         
            -
                  when  
     | 
| 
      
 69 
     | 
    
         
            +
                  next if f.split(":").count != 2
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                  case f.split(":").first
         
     | 
| 
      
 72 
     | 
    
         
            +
                  when "belongs_to"
         
     | 
| 
      
 73 
     | 
    
         
            +
                    hash["#{f.split(":").last.singularize}_id"] = @id_db_type
         
     | 
| 
      
 74 
     | 
    
         
            +
                    @belongs_to_fields["#{f.split(":").last.singularize}_id"] = @id_db_type
         
     | 
| 
      
 75 
     | 
    
         
            +
                  when "has_many" then @has_many << f.split(":").last.pluralize
         
     | 
| 
      
 76 
     | 
    
         
            +
                  when "many_to_many" then @many_to_many << f.split(":").last.pluralize
         
     | 
| 
       78 
77 
     | 
    
         
             
                  else
         
     | 
| 
       79 
     | 
    
         
            -
                    hash[f.split( 
     | 
| 
      
 78 
     | 
    
         
            +
                    hash[f.split(":").first] = f.split(":").last
         
     | 
| 
       80 
79 
     | 
    
         
             
                  end
         
     | 
| 
       81 
80 
     | 
    
         
             
                end
         
     | 
| 
       82 
81 
     | 
    
         | 
| 
       83 
82 
     | 
    
         
             
                @fields_to_migration = @args.map do |f|
         
     | 
| 
       84 
     | 
    
         
            -
                  "add_column :#{@resource.pluralize}, :#{f.join( 
     | 
| 
      
 83 
     | 
    
         
            +
                  "add_column :#{@resource.pluralize}, :#{f.join(", :")}"
         
     | 
| 
       85 
84 
     | 
    
         
             
                end.join("\n    ")
         
     | 
| 
       86 
     | 
    
         
            -
                @named_fields = @args.keys.join( 
     | 
| 
      
 85 
     | 
    
         
            +
                @named_fields = @args.keys.join("_")
         
     | 
| 
       87 
86 
     | 
    
         
             
              end
         
     | 
| 
       88 
87 
     | 
    
         | 
| 
       89 
88 
     | 
    
         
             
              def generate_migration(resource, fields)
         
     | 
| 
         @@ -159,8 +158,8 @@ class GraphqlAddFieldsGenerator < Rails::Generators::NamedBase 
     | 
|
| 
       159 
158 
     | 
    
         
             
                  add_belongs_to_field_to_type(resource, f)
         
     | 
| 
       160 
159 
     | 
    
         
             
                end
         
     | 
| 
       161 
160 
     | 
    
         
             
                @belongs_to_fields.each do |f, _|
         
     | 
| 
       162 
     | 
    
         
            -
                  add_has_many_fields_to_type(f.gsub( 
     | 
| 
       163 
     | 
    
         
            -
                  add_belongs_to_field_to_type(f.gsub( 
     | 
| 
      
 161 
     | 
    
         
            +
                  add_has_many_fields_to_type(f.gsub("_id", ""), resource)
         
     | 
| 
      
 162 
     | 
    
         
            +
                  add_belongs_to_field_to_type(f.gsub("_id", ""), resource)
         
     | 
| 
       164 
163 
     | 
    
         
             
                end
         
     | 
| 
       165 
164 
     | 
    
         
             
              end
         
     | 
| 
       166 
165 
     | 
    
         | 
| 
         @@ -179,9 +178,9 @@ class GraphqlAddFieldsGenerator < Rails::Generators::NamedBase 
     | 
|
| 
       179 
178 
     | 
    
         
             
                @many_to_many.each do |field|
         
     | 
| 
       180 
179 
     | 
    
         
             
                  generate_create_migration(
         
     | 
| 
       181 
180 
     | 
    
         
             
                    "#{resource}_#{field}",
         
     | 
| 
       182 
     | 
    
         
            -
                     
     | 
| 
       183 
     | 
    
         
            -
            t.#{@id_db_type} :#{resource.underscore.singularize}_id
         
     | 
| 
       184 
     | 
    
         
            -
             
     | 
| 
      
 181 
     | 
    
         
            +
                    <<~STRING
         
     | 
| 
      
 182 
     | 
    
         
            +
                      t.#{@id_db_type} :#{resource.underscore.singularize}_id
         
     | 
| 
      
 183 
     | 
    
         
            +
                            t.#{@id_db_type} :#{field.underscore.singularize}_id
         
     | 
| 
       185 
184 
     | 
    
         
             
                    STRING
         
     | 
| 
       186 
185 
     | 
    
         
             
                  )
         
     | 
| 
       187 
186 
     | 
    
         
             
                  generate_empty_model("#{resource}_#{field.singularize}")
         
     | 
| 
         @@ -203,7 +202,7 @@ t.#{@id_db_type} :#{resource.underscore.singularize}_id 
     | 
|
| 
       203 
202 
     | 
    
         
             
                  add_to_model(field, "belongs_to :#{resource.singularize}")
         
     | 
| 
       204 
203 
     | 
    
         
             
                end
         
     | 
| 
       205 
204 
     | 
    
         
             
                @belongs_to_fields.each do |k, _|
         
     | 
| 
       206 
     | 
    
         
            -
                  field = k.gsub( 
     | 
| 
      
 205 
     | 
    
         
            +
                  field = k.gsub("_id", "")
         
     | 
| 
       207 
206 
     | 
    
         
             
                  add_to_model(field, "has_many :#{resource.pluralize}")
         
     | 
| 
       208 
207 
     | 
    
         
             
                  add_to_model(resource, "belongs_to :#{field.singularize}")
         
     | 
| 
       209 
208 
     | 
    
         
             
                end
         
     | 
| 
         @@ -213,14 +212,14 @@ t.#{@id_db_type} :#{resource.underscore.singularize}_id 
     | 
|
| 
       213 
212 
     | 
    
         
             
                result = args&.map do |k, v|
         
     | 
| 
       214 
213 
     | 
    
         
             
                  field_name = k
         
     | 
| 
       215 
214 
     | 
    
         
             
                  field_type = types_mapping(v)
         
     | 
| 
       216 
     | 
    
         
            -
                  res = "#{input_type ?  
     | 
| 
       217 
     | 
    
         
            -
                  if !input_type && field_name.ends_with?( 
     | 
| 
       218 
     | 
    
         
            -
                    res += "\n    field :#{field_name.gsub( 
     | 
| 
       219 
     | 
    
         
            -
                      "#{field_name.gsub( 
     | 
| 
      
 215 
     | 
    
         
            +
                  res = "#{input_type ? "argument" : "field"} :#{field_name}, #{field_type}, #{input_type ? "required: false" : "null: true"}"
         
     | 
| 
      
 216 
     | 
    
         
            +
                  if !input_type && field_name.ends_with?("_id") && @belongs_to_fields.key?(field_name)
         
     | 
| 
      
 217 
     | 
    
         
            +
                    res += "\n    field :#{field_name.gsub("_id", "")}, " \
         
     | 
| 
      
 218 
     | 
    
         
            +
                      "#{field_name.gsub("_id", "").pluralize.camelize}::Type"
         
     | 
| 
       220 
219 
     | 
    
         
             
                  end
         
     | 
| 
       221 
220 
     | 
    
         
             
                  res
         
     | 
| 
       222 
221 
     | 
    
         
             
                end&.join("\n    " + ("  " if input_type).to_s)
         
     | 
| 
       223 
     | 
    
         
            -
                input_type ? result.gsub("field :id, #{@id_type}, null: false\n",  
     | 
| 
      
 222 
     | 
    
         
            +
                input_type ? result.gsub("field :id, #{@id_type}, null: false\n", "") : result
         
     | 
| 
       224 
223 
     | 
    
         
             
              end
         
     | 
| 
       225 
224 
     | 
    
         | 
| 
       226 
225 
     | 
    
         
             
              # Helpers methods
         
     | 
| 
         @@ -238,9 +237,9 @@ t.#{@id_db_type} :#{resource.underscore.singularize}_id 
     | 
|
| 
       238 
237 
     | 
    
         
             
                line_nb = 0
         
     | 
| 
       239 
238 
     | 
    
         
             
                IO.readlines(file).each do |l|
         
     | 
| 
       240 
239 
     | 
    
         
             
                  line_nb += 1
         
     | 
| 
       241 
     | 
    
         
            -
                  break if l.include?( 
     | 
| 
      
 240 
     | 
    
         
            +
                  break if l.include?("ApplicationRecord")
         
     | 
| 
       242 
241 
     | 
    
         
             
                end
         
     | 
| 
       243 
     | 
    
         
            -
                raise  
     | 
| 
      
 242 
     | 
    
         
            +
                raise "Your model must inherit from ApplicationRecord to make it work" if line_nb >= line_count
         
     | 
| 
       244 
243 
     | 
    
         | 
| 
       245 
244 
     | 
    
         
             
                write_at(file_name, line_nb + 1, "  #{line}\n")
         
     | 
| 
       246 
245 
     | 
    
         
             
              end
         
     | 
| 
         @@ -285,7 +284,7 @@ t.#{@id_db_type} :#{resource.underscore.singularize}_id 
     | 
|
| 
       285 
284 
     | 
    
         
             
              end
         
     | 
| 
       286 
285 
     | 
    
         | 
| 
       287 
286 
     | 
    
         
             
              def write_at(file_name, line, data)
         
     | 
| 
       288 
     | 
    
         
            -
                open(file_name,  
     | 
| 
      
 287 
     | 
    
         
            +
                open(file_name, "r+") do |f|
         
     | 
| 
       289 
288 
     | 
    
         
             
                  while (line -= 1).positive?
         
     | 
| 
       290 
289 
     | 
    
         
             
                    f.readline
         
     | 
| 
       291 
290 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -296,5 +295,4 @@ t.#{@id_db_type} :#{resource.underscore.singularize}_id 
     | 
|
| 
       296 
295 
     | 
    
         
             
                  f.write(rest)
         
     | 
| 
       297 
296 
     | 
    
         
             
                end
         
     | 
| 
       298 
297 
     | 
    
         
             
              end
         
     | 
| 
       299 
     | 
    
         
            -
             
     | 
| 
       300 
298 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,14 +1,13 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
      
 1 
     | 
    
         
            +
            require "graphql/rails/api/config"
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module GraphqlRailsApi
         
     | 
| 
       4 
4 
     | 
    
         
             
              class InstallGenerator < Rails::Generators::Base
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
                class_option('generate_graphql_route', type: :boolean, default: true)
         
     | 
| 
      
 5 
     | 
    
         
            +
                class_option("generate_graphql_route", type: :boolean, default: true)
         
     | 
| 
       7 
6 
     | 
    
         | 
| 
       8 
7 
     | 
    
         
             
                def generate_files
         
     | 
| 
       9 
8 
     | 
    
         
             
                  @app_name = File.basename(Rails.root.to_s).underscore
         
     | 
| 
       10 
9 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
                  folder =  
     | 
| 
      
 10 
     | 
    
         
            +
                  folder = "app/graphql/"
         
     | 
| 
       12 
11 
     | 
    
         
             
                  FileUtils.mkdir_p(folder) unless File.directory?(folder)
         
     | 
| 
       13 
12 
     | 
    
         | 
| 
       14 
13 
     | 
    
         
             
                  write_uuid_extensions_migration
         
     | 
| 
         @@ -21,22 +20,23 @@ module GraphqlRailsApi 
     | 
|
| 
       21 
20 
     | 
    
         | 
| 
       22 
21 
     | 
    
         
             
                  write_controller
         
     | 
| 
       23 
22 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
                  system  
     | 
| 
      
 23 
     | 
    
         
            +
                  system "rails g graphql_resource user first_name:string last_name:string email:string"
         
     | 
| 
       25 
24 
     | 
    
         | 
| 
       26 
25 
     | 
    
         
             
                  write_application_record_methods
         
     | 
| 
       27 
26 
     | 
    
         
             
                  write_initializer
         
     | 
| 
       28 
27 
     | 
    
         
             
                  write_require_application_rb
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
       29 
29 
     | 
    
         
             
                  write_route if options.generate_graphql_route?
         
     | 
| 
       30 
30 
     | 
    
         
             
                end
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
       32 
32 
     | 
    
         
             
                private
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
                def write_route
         
     | 
| 
       35 
     | 
    
         
            -
                  route_file = File.read( 
     | 
| 
       36 
     | 
    
         
            -
                  return if route_file.include?( 
     | 
| 
      
 35 
     | 
    
         
            +
                  route_file = File.read("config/routes.rb")
         
     | 
| 
      
 36 
     | 
    
         
            +
                  return if route_file.include?("graphql")
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
       38 
38 
     | 
    
         
             
                  File.write(
         
     | 
| 
       39 
     | 
    
         
            -
                     
     | 
| 
      
 39 
     | 
    
         
            +
                    "config/routes.rb",
         
     | 
| 
       40 
40 
     | 
    
         
             
                    route_file.gsub(
         
     | 
| 
       41 
41 
     | 
    
         
             
                      "Rails.application.routes.draw do\n",
         
     | 
| 
       42 
42 
     | 
    
         
             
                      "Rails.application.routes.draw do\n" \
         
     | 
| 
         @@ -47,7 +47,7 @@ module GraphqlRailsApi 
     | 
|
| 
       47 
47 
     | 
    
         | 
| 
       48 
48 
     | 
    
         
             
                def write_collection_ids_resolver
         
     | 
| 
       49 
49 
     | 
    
         
             
                  File.write(
         
     | 
| 
       50 
     | 
    
         
            -
                     
     | 
| 
      
 50 
     | 
    
         
            +
                    "app/graphql/collection_ids_resolver.rb",
         
     | 
| 
       51 
51 
     | 
    
         
             
                    <<~STRING
         
     | 
| 
       52 
52 
     | 
    
         
             
                      class CollectionIdsResolver
         
     | 
| 
       53 
53 
     | 
    
         | 
| 
         @@ -65,14 +65,13 @@ module GraphqlRailsApi 
     | 
|
| 
       65 
65 
     | 
    
         
             
                end
         
     | 
| 
       66 
66 
     | 
    
         | 
| 
       67 
67 
     | 
    
         
             
                def write_application_record_methods
         
     | 
| 
       68 
     | 
    
         
            -
                  lines_count = File.read( 
     | 
| 
      
 68 
     | 
    
         
            +
                  lines_count = File.read("app/models/application_record.rb").lines.count
         
     | 
| 
       69 
69 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
                  return if File.read( 
     | 
| 
      
 70 
     | 
    
         
            +
                  return if File.read("app/models/application_record.rb").include?("def self.visible_for")
         
     | 
| 
       71 
71 
     | 
    
         
             
                  write_at(
         
     | 
| 
       72 
     | 
    
         
            -
                     
     | 
| 
      
 72 
     | 
    
         
            +
                    "app/models/application_record.rb",
         
     | 
| 
       73 
73 
     | 
    
         
             
                    lines_count,
         
     | 
| 
       74 
74 
     | 
    
         
             
                    <<-STRING
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
75 
     | 
    
         
             
              def self.visible_for(*)
         
     | 
| 
       77 
76 
     | 
    
         
             
                all
         
     | 
| 
       78 
77 
     | 
    
         
             
              end
         
     | 
| 
         @@ -82,17 +81,17 @@ module GraphqlRailsApi 
     | 
|
| 
       82 
81 
     | 
    
         
             
              end
         
     | 
| 
       83 
82 
     | 
    
         | 
| 
       84 
83 
     | 
    
         | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
            end
         
     | 
| 
      
 84 
     | 
    
         
            +
                    STRING
         
     | 
| 
      
 85 
     | 
    
         
            +
                  )
         
     | 
| 
      
 86 
     | 
    
         
            +
                end
         
     | 
| 
       88 
87 
     | 
    
         | 
| 
       89 
88 
     | 
    
         
             
                def write_require_application_rb
         
     | 
| 
       90 
     | 
    
         
            -
                  write_at( 
     | 
| 
      
 89 
     | 
    
         
            +
                  write_at("config/application.rb", 5, "require 'graphql/hydrate_query'\nrequire 'rkelly'\nrequire 'graphql'\n")
         
     | 
| 
       91 
90 
     | 
    
         
             
                end
         
     | 
| 
       92 
91 
     | 
    
         | 
| 
       93 
92 
     | 
    
         
             
                def write_uuid_extensions_migration
         
     | 
| 
       94 
     | 
    
         
            -
                  system( 
     | 
| 
       95 
     | 
    
         
            -
                  migration_file = Dir.glob( 
     | 
| 
      
 93 
     | 
    
         
            +
                  system("bundle exec rails generate migration uuid_pg_extensions --skip")
         
     | 
| 
      
 94 
     | 
    
         
            +
                  migration_file = Dir.glob("db/migrate/*uuid_pg_extensions*").last
         
     | 
| 
       96 
95 
     | 
    
         
             
                  File.write(
         
     | 
| 
       97 
96 
     | 
    
         
             
                    migration_file,
         
     | 
| 
       98 
97 
     | 
    
         
             
                    <<~STRING
         
     | 
| 
         @@ -109,7 +108,7 @@ end 
     | 
|
| 
       109 
108 
     | 
    
         | 
| 
       110 
109 
     | 
    
         
             
                def write_initializer
         
     | 
| 
       111 
110 
     | 
    
         
             
                  File.write(
         
     | 
| 
       112 
     | 
    
         
            -
                     
     | 
| 
      
 111 
     | 
    
         
            +
                    "config/initializers/graphql_rails_api_config.rb",
         
     | 
| 
       113 
112 
     | 
    
         
             
                    <<~STRING
         
     | 
| 
       114 
113 
     | 
    
         
             
                      require 'graphql/rails/api/config'
         
     | 
| 
       115 
114 
     | 
    
         | 
| 
         @@ -120,7 +119,7 @@ end 
     | 
|
| 
       120 
119 
     | 
    
         | 
| 
       121 
120 
     | 
    
         
             
                def write_controller
         
     | 
| 
       122 
121 
     | 
    
         
             
                  File.write(
         
     | 
| 
       123 
     | 
    
         
            -
                     
     | 
| 
      
 122 
     | 
    
         
            +
                    "app/controllers/graphql_controller.rb",
         
     | 
| 
       124 
123 
     | 
    
         
             
                    <<~STRING
         
     | 
| 
       125 
124 
     | 
    
         
             
                      class GraphqlController < ApplicationController
         
     | 
| 
       126 
125 
     | 
    
         | 
| 
         @@ -162,7 +161,7 @@ end 
     | 
|
| 
       162 
161 
     | 
    
         | 
| 
       163 
162 
     | 
    
         
             
                def write_mutation_type
         
     | 
| 
       164 
163 
     | 
    
         
             
                  File.write(
         
     | 
| 
       165 
     | 
    
         
            -
                     
     | 
| 
      
 164 
     | 
    
         
            +
                    "app/graphql/mutation_type.rb",
         
     | 
| 
       166 
165 
     | 
    
         
             
                    <<~'STRING'
         
     | 
| 
       167 
166 
     | 
    
         
             
                      class MutationType < GraphQL::Schema::Object
         
     | 
| 
       168 
167 
     | 
    
         
             
                        graphql_name "Mutation"
         
     | 
| 
         @@ -183,7 +182,7 @@ end 
     | 
|
| 
       183 
182 
     | 
    
         | 
| 
       184 
183 
     | 
    
         
             
                def write_query_type
         
     | 
| 
       185 
184 
     | 
    
         
             
                  File.write(
         
     | 
| 
       186 
     | 
    
         
            -
                     
     | 
| 
      
 185 
     | 
    
         
            +
                    "app/graphql/query_type.rb",
         
     | 
| 
       187 
186 
     | 
    
         
             
                    <<~'STRING'
         
     | 
| 
       188 
187 
     | 
    
         
             
                      class QueryType < GraphQL::Schema::Object
         
     | 
| 
       189 
188 
     | 
    
         
             
                        description "The query root of this schema"
         
     | 
| 
         @@ -263,152 +262,152 @@ end 
     | 
|
| 
       263 
262 
     | 
    
         
             
                  File.write(
         
     | 
| 
       264 
263 
     | 
    
         
             
                    "app/graphql/#{@app_name}_schema.rb",
         
     | 
| 
       265 
264 
     | 
    
         
             
                    <<~STRING
         
     | 
| 
       266 
     | 
    
         
            -
             
     | 
| 
       267 
     | 
    
         
            -
             
     | 
| 
       268 
     | 
    
         
            -
             
     | 
| 
       269 
     | 
    
         
            -
             
     | 
| 
       270 
     | 
    
         
            -
             
     | 
| 
       271 
     | 
    
         
            -
             
     | 
| 
       272 
     | 
    
         
            -
             
     | 
| 
       273 
     | 
    
         
            -
             
     | 
| 
       274 
     | 
    
         
            -
             
     | 
| 
       275 
     | 
    
         
            -
             
     | 
| 
       276 
     | 
    
         
            -
             
     | 
| 
       277 
     | 
    
         
            -
             
     | 
| 
      
 265 
     | 
    
         
            +
                            class #{@app_name.camelize}Schema < GraphQL::Schema
         
     | 
| 
      
 266 
     | 
    
         
            +
                              query QueryType
         
     | 
| 
      
 267 
     | 
    
         
            +
                              mutation MutationType
         
     | 
| 
      
 268 
     | 
    
         
            +
                              max_depth 15
         
     | 
| 
      
 269 
     | 
    
         
            +
             
     | 
| 
      
 270 
     | 
    
         
            +
                              def self.type_error(err, query_ctx)
         
     | 
| 
      
 271 
     | 
    
         
            +
                                type_error_logger = Logger.new("#{Rails.root}/log/graphql_type_errors.log")
         
     | 
| 
      
 272 
     | 
    
         
            +
             
     | 
| 
      
 273 
     | 
    
         
            +
                                type_error_logger.error(
         
     | 
| 
      
 274 
     | 
    
         
            +
                                  "#{err} for #{query_ctx.query.query_string} with #{query_ctx.query.provided_variables}"
         
     | 
| 
      
 275 
     | 
    
         
            +
                                )
         
     | 
| 
      
 276 
     | 
    
         
            +
                              end
         
     | 
| 
      
 277 
     | 
    
         
            +
                            end
         
     | 
| 
      
 278 
     | 
    
         
            +
                          <<~STRING
         
     | 
| 
      
 279 
     | 
    
         
            +
                        )
         
     | 
| 
       278 
280 
     | 
    
         
             
                      end
         
     | 
| 
       279 
     | 
    
         
            -
                    <<~STRING
         
     | 
| 
       280 
     | 
    
         
            -
                  )
         
     | 
| 
       281 
     | 
    
         
            -
                end
         
     | 
| 
       282 
     | 
    
         
            -
             
     | 
| 
       283 
     | 
    
         
            -
                def write_service
         
     | 
| 
       284 
     | 
    
         
            -
                  File.write(
         
     | 
| 
       285 
     | 
    
         
            -
                    'app/graphql/application_service.rb',
         
     | 
| 
       286 
     | 
    
         
            -
                    <<~'STRING'
         
     | 
| 
       287 
     | 
    
         
            -
                      class ApplicationService
         
     | 
| 
       288 
281 
     | 
    
         | 
| 
       289 
     | 
    
         
            -
             
     | 
| 
       290 
     | 
    
         
            -
             
     | 
| 
       291 
     | 
    
         
            -
             
     | 
| 
       292 
     | 
    
         
            -
                           
     | 
| 
       293 
     | 
    
         
            -
             
     | 
| 
       294 
     | 
    
         
            -
             
     | 
| 
       295 
     | 
    
         
            -
             
     | 
| 
       296 
     | 
    
         
            -
             
     | 
| 
       297 
     | 
    
         
            -
             
     | 
| 
       298 
     | 
    
         
            -
             
     | 
| 
       299 
     | 
    
         
            -
             
     | 
| 
       300 
     | 
    
         
            -
             
     | 
| 
       301 
     | 
    
         
            -
             
     | 
| 
       302 
     | 
    
         
            -
             
     | 
| 
       303 
     | 
    
         
            -
                               
     | 
| 
       304 
     | 
    
         
            -
             
     | 
| 
       305 
     | 
    
         
            -
             
     | 
| 
       306 
     | 
    
         
            -
             
     | 
| 
       307 
     | 
    
         
            -
             
     | 
| 
       308 
     | 
    
         
            -
             
     | 
| 
       309 
     | 
    
         
            -
             
     | 
| 
       310 
     | 
    
         
            -
             
     | 
| 
       311 
     | 
    
         
            -
             
     | 
| 
       312 
     | 
    
         
            -
             
     | 
| 
       313 
     | 
    
         
            -
             
     | 
| 
       314 
     | 
    
         
            -
             
     | 
| 
       315 
     | 
    
         
            -
             
     | 
| 
       316 
     | 
    
         
            -
             
     | 
| 
       317 
     | 
    
         
            -
             
     | 
| 
       318 
     | 
    
         
            -
             
     | 
| 
       319 
     | 
    
         
            -
             
     | 
| 
       320 
     | 
    
         
            -
             
     | 
| 
       321 
     | 
    
         
            -
             
     | 
| 
       322 
     | 
    
         
            -
             
     | 
| 
       323 
     | 
    
         
            -
             
     | 
| 
       324 
     | 
    
         
            -
             
     | 
| 
       325 
     | 
    
         
            -
             
     | 
| 
       326 
     | 
    
         
            -
             
     | 
| 
       327 
     | 
    
         
            -
             
     | 
| 
       328 
     | 
    
         
            -
             
     | 
| 
       329 
     | 
    
         
            -
             
     | 
| 
       330 
     | 
    
         
            -
             
     | 
| 
       331 
     | 
    
         
            -
             
     | 
| 
       332 
     | 
    
         
            -
             
     | 
| 
       333 
     | 
    
         
            -
             
     | 
| 
       334 
     | 
    
         
            -
             
     | 
| 
       335 
     | 
    
         
            -
             
     | 
| 
       336 
     | 
    
         
            -
             
     | 
| 
       337 
     | 
    
         
            -
             
     | 
| 
       338 
     | 
    
         
            -
             
     | 
| 
       339 
     | 
    
         
            -
             
     | 
| 
       340 
     | 
    
         
            -
             
     | 
| 
       341 
     | 
    
         
            -
             
     | 
| 
       342 
     | 
    
         
            -
             
     | 
| 
       343 
     | 
    
         
            -
             
     | 
| 
       344 
     | 
    
         
            -
             
     | 
| 
       345 
     | 
    
         
            -
             
     | 
| 
       346 
     | 
    
         
            -
             
     | 
| 
       347 
     | 
    
         
            -
             
     | 
| 
       348 
     | 
    
         
            -
             
     | 
| 
       349 
     | 
    
         
            -
             
     | 
| 
       350 
     | 
    
         
            -
             
     | 
| 
       351 
     | 
    
         
            -
             
     | 
| 
       352 
     | 
    
         
            -
             
     | 
| 
       353 
     | 
    
         
            -
             
     | 
| 
       354 
     | 
    
         
            -
             
     | 
| 
       355 
     | 
    
         
            -
             
     | 
| 
       356 
     | 
    
         
            -
             
     | 
| 
       357 
     | 
    
         
            -
             
     | 
| 
       358 
     | 
    
         
            -
             
     | 
| 
       359 
     | 
    
         
            -
             
     | 
| 
       360 
     | 
    
         
            -
             
     | 
| 
       361 
     | 
    
         
            -
             
     | 
| 
       362 
     | 
    
         
            -
             
     | 
| 
       363 
     | 
    
         
            -
             
     | 
| 
       364 
     | 
    
         
            -
             
     | 
| 
       365 
     | 
    
         
            -
             
     | 
| 
       366 
     | 
    
         
            -
             
     | 
| 
       367 
     | 
    
         
            -
             
     | 
| 
       368 
     | 
    
         
            -
             
     | 
| 
       369 
     | 
    
         
            -
             
     | 
| 
       370 
     | 
    
         
            -
             
     | 
| 
       371 
     | 
    
         
            -
             
     | 
| 
       372 
     | 
    
         
            -
             
     | 
| 
       373 
     | 
    
         
            -
             
     | 
| 
       374 
     | 
    
         
            -
             
     | 
| 
       375 
     | 
    
         
            -
             
     | 
| 
       376 
     | 
    
         
            -
             
     | 
| 
       377 
     | 
    
         
            -
             
     | 
| 
       378 
     | 
    
         
            -
             
     | 
| 
       379 
     | 
    
         
            -
             
     | 
| 
       380 
     | 
    
         
            -
             
     | 
| 
       381 
     | 
    
         
            -
             
     | 
| 
       382 
     | 
    
         
            -
             
     | 
| 
       383 
     | 
    
         
            -
             
     | 
| 
       384 
     | 
    
         
            -
             
     | 
| 
       385 
     | 
    
         
            -
             
     | 
| 
       386 
     | 
    
         
            -
             
     | 
| 
       387 
     | 
    
         
            -
             
     | 
| 
       388 
     | 
    
         
            -
             
     | 
| 
       389 
     | 
    
         
            -
             
     | 
| 
       390 
     | 
    
         
            -
             
     | 
| 
       391 
     | 
    
         
            -
             
     | 
| 
       392 
     | 
    
         
            -
             
     | 
| 
       393 
     | 
    
         
            -
             
     | 
| 
       394 
     | 
    
         
            -
             
     | 
| 
       395 
     | 
    
         
            -
             
     | 
| 
       396 
     | 
    
         
            -
             
     | 
| 
       397 
     | 
    
         
            -
             
     | 
| 
       398 
     | 
    
         
            -
             
     | 
| 
       399 
     | 
    
         
            -
             
     | 
| 
       400 
     | 
    
         
            -
             
     | 
| 
       401 
     | 
    
         
            -
             
     | 
| 
       402 
     | 
    
         
            -
             
     | 
| 
       403 
     | 
    
         
            -
             
     | 
| 
       404 
     | 
    
         
            -
             
     | 
| 
      
 282 
     | 
    
         
            +
                      def write_service
         
     | 
| 
      
 283 
     | 
    
         
            +
                        File.write(
         
     | 
| 
      
 284 
     | 
    
         
            +
                          'app/graphql/application_service.rb',
         
     | 
| 
      
 285 
     | 
    
         
            +
                          <<~'STRING'
         
     | 
| 
      
 286 
     | 
    
         
            +
                            class ApplicationService
         
     | 
| 
      
 287 
     | 
    
         
            +
             
     | 
| 
      
 288 
     | 
    
         
            +
                              attr_accessor :params, :object, :fields, :user
         
     | 
| 
      
 289 
     | 
    
         
            +
             
     | 
| 
      
 290 
     | 
    
         
            +
                              def initialize(params: {}, object: nil, object_id: nil, user: nil, context: nil)
         
     | 
| 
      
 291 
     | 
    
         
            +
                                @params = params.is_a?(Array) ? params.map { |p| p.to_h.symbolize_keys } : params.to_h.symbolize_keys
         
     | 
| 
      
 292 
     | 
    
         
            +
                                @context = context
         
     | 
| 
      
 293 
     | 
    
         
            +
                                @object = object || (object_id && model.visible_for(user: user).find_by(id: object_id))
         
     | 
| 
      
 294 
     | 
    
         
            +
                                @object_id = object_id
         
     | 
| 
      
 295 
     | 
    
         
            +
                                @user = user
         
     | 
| 
      
 296 
     | 
    
         
            +
                              end
         
     | 
| 
      
 297 
     | 
    
         
            +
             
     | 
| 
      
 298 
     | 
    
         
            +
                              def self.call(resource, meth)
         
     | 
| 
      
 299 
     | 
    
         
            +
                                lambda { |_obj, args, context|
         
     | 
| 
      
 300 
     | 
    
         
            +
                                  params = args && args[resource] ? args[resource] : args
         
     | 
| 
      
 301 
     | 
    
         
            +
                                  "#{resource.to_s.pluralize.camelize.constantize}::Service".constantize.new(
         
     | 
| 
      
 302 
     | 
    
         
            +
                                    params: params, user: context[:current_user],
         
     | 
| 
      
 303 
     | 
    
         
            +
                                    object_id: args[:id], context: context
         
     | 
| 
      
 304 
     | 
    
         
            +
                                  ).send(meth)
         
     | 
| 
      
 305 
     | 
    
         
            +
                                }
         
     | 
| 
      
 306 
     | 
    
         
            +
                              end
         
     | 
| 
      
 307 
     | 
    
         
            +
             
     | 
| 
      
 308 
     | 
    
         
            +
                              def index
         
     | 
| 
      
 309 
     | 
    
         
            +
                                Graphql::HydrateQuery.new(
         
     | 
| 
      
 310 
     | 
    
         
            +
                                  model.all,
         
     | 
| 
      
 311 
     | 
    
         
            +
                                  @context,
         
     | 
| 
      
 312 
     | 
    
         
            +
                                  order_by: params[:order_by],
         
     | 
| 
      
 313 
     | 
    
         
            +
                                  filter: params[:filter],
         
     | 
| 
      
 314 
     | 
    
         
            +
                                  per_page: params[:per_page],
         
     | 
| 
      
 315 
     | 
    
         
            +
                                  page: params[:page],
         
     | 
| 
      
 316 
     | 
    
         
            +
                                  user: user
         
     | 
| 
      
 317 
     | 
    
         
            +
                                ).run.compact
         
     | 
| 
      
 318 
     | 
    
         
            +
                              end
         
     | 
| 
      
 319 
     | 
    
         
            +
             
     | 
| 
      
 320 
     | 
    
         
            +
                              def show
         
     | 
| 
      
 321 
     | 
    
         
            +
                                object = Graphql::HydrateQuery.new(model.all, @context, user: user, id: params[:id]).run
         
     | 
| 
      
 322 
     | 
    
         
            +
                                return not_allowed if object.blank?
         
     | 
| 
      
 323 
     | 
    
         
            +
             
     | 
| 
      
 324 
     | 
    
         
            +
                                object
         
     | 
| 
      
 325 
     | 
    
         
            +
                              end
         
     | 
| 
      
 326 
     | 
    
         
            +
             
     | 
| 
      
 327 
     | 
    
         
            +
                              def create
         
     | 
| 
      
 328 
     | 
    
         
            +
                                object = model.new(params.select { |p| model.new.respond_to?(p) })
         
     | 
| 
      
 329 
     | 
    
         
            +
                                return not_allowed if not_allowed_to_create_resource(object)
         
     | 
| 
      
 330 
     | 
    
         
            +
             
     | 
| 
      
 331 
     | 
    
         
            +
                                if object.save
         
     | 
| 
      
 332 
     | 
    
         
            +
                                  { singular_resource => Graphql::HydrateQuery.new(model.all, @context, user: user, id: object.id).run }
         
     | 
| 
      
 333 
     | 
    
         
            +
                                else
         
     | 
| 
      
 334 
     | 
    
         
            +
                                  graphql_error(object.errors.full_messages.join(', '))
         
     | 
| 
      
 335 
     | 
    
         
            +
                                end
         
     | 
| 
      
 336 
     | 
    
         
            +
                              end
         
     | 
| 
      
 337 
     | 
    
         
            +
             
     | 
| 
      
 338 
     | 
    
         
            +
                              def update
         
     | 
| 
      
 339 
     | 
    
         
            +
                                return not_allowed if write_not_allowed
         
     | 
| 
      
 340 
     | 
    
         
            +
             
     | 
| 
      
 341 
     | 
    
         
            +
                                if object.update_attributes(params)
         
     | 
| 
      
 342 
     | 
    
         
            +
                                  { singular_resource => Graphql::HydrateQuery.new(model.all, @context, user: user, id: object.id).run }
         
     | 
| 
      
 343 
     | 
    
         
            +
                                else
         
     | 
| 
      
 344 
     | 
    
         
            +
                                  graphql_error(object.errors.full_messages.join(', '))
         
     | 
| 
      
 345 
     | 
    
         
            +
                                end
         
     | 
| 
      
 346 
     | 
    
         
            +
                              end
         
     | 
| 
      
 347 
     | 
    
         
            +
             
     | 
| 
      
 348 
     | 
    
         
            +
                              def destroy
         
     | 
| 
      
 349 
     | 
    
         
            +
                                object = model.find_by(id: params[:id])
         
     | 
| 
      
 350 
     | 
    
         
            +
                                return not_allowed if write_not_allowed
         
     | 
| 
      
 351 
     | 
    
         
            +
             
     | 
| 
      
 352 
     | 
    
         
            +
                                if object.destroy
         
     | 
| 
      
 353 
     | 
    
         
            +
                                  { singular_resource => object.attributes }
         
     | 
| 
      
 354 
     | 
    
         
            +
                                else
         
     | 
| 
      
 355 
     | 
    
         
            +
                                  graphql_error(object.errors.full_messages.join(', '))
         
     | 
| 
      
 356 
     | 
    
         
            +
                                end
         
     | 
| 
      
 357 
     | 
    
         
            +
                              end
         
     | 
| 
      
 358 
     | 
    
         
            +
             
     | 
| 
      
 359 
     | 
    
         
            +
                              private
         
     | 
| 
      
 360 
     | 
    
         
            +
             
     | 
| 
      
 361 
     | 
    
         
            +
                              def write_not_allowed
         
     | 
| 
      
 362 
     | 
    
         
            +
                                !model.visible_for(user: user).include?(object) if object
         
     | 
| 
      
 363 
     | 
    
         
            +
                              end
         
     | 
| 
      
 364 
     | 
    
         
            +
             
     | 
| 
      
 365 
     | 
    
         
            +
                              def access_not_allowed
         
     | 
| 
      
 366 
     | 
    
         
            +
                                !model.visible_for(user: user).include?(object) if object
         
     | 
| 
      
 367 
     | 
    
         
            +
                              end
         
     | 
| 
      
 368 
     | 
    
         
            +
             
     | 
| 
      
 369 
     | 
    
         
            +
                              def not_allowed
         
     | 
| 
      
 370 
     | 
    
         
            +
                                graphql_error('403 - Not allowed')
         
     | 
| 
      
 371 
     | 
    
         
            +
                              end
         
     | 
| 
      
 372 
     | 
    
         
            +
             
     | 
| 
      
 373 
     | 
    
         
            +
                              def graphql_error(message)
         
     | 
| 
      
 374 
     | 
    
         
            +
                                GraphQL::ExecutionError.new(message)
         
     | 
| 
      
 375 
     | 
    
         
            +
                              end
         
     | 
| 
      
 376 
     | 
    
         
            +
             
     | 
| 
      
 377 
     | 
    
         
            +
                              def singular_resource
         
     | 
| 
      
 378 
     | 
    
         
            +
                                resource_name.singularize
         
     | 
| 
      
 379 
     | 
    
         
            +
                              end
         
     | 
| 
      
 380 
     | 
    
         
            +
             
     | 
| 
      
 381 
     | 
    
         
            +
                              def model
         
     | 
| 
      
 382 
     | 
    
         
            +
                                singular_resource.camelize.constantize
         
     | 
| 
      
 383 
     | 
    
         
            +
                              end
         
     | 
| 
      
 384 
     | 
    
         
            +
             
     | 
| 
      
 385 
     | 
    
         
            +
                              def resource_name
         
     | 
| 
      
 386 
     | 
    
         
            +
                                self.class.to_s.split(':').first.underscore
         
     | 
| 
      
 387 
     | 
    
         
            +
                              end
         
     | 
| 
      
 388 
     | 
    
         
            +
             
     | 
| 
      
 389 
     | 
    
         
            +
                              def not_allowed_to_create_resource(created_resource)
         
     | 
| 
      
 390 
     | 
    
         
            +
                                params.select { |k, _| k.to_s.end_with?('_id') }.each do |belongs_relation, rel_id|
         
     | 
| 
      
 391 
     | 
    
         
            +
                                  klass = created_resource.class.reflect_on_association(belongs_relation.to_s.gsub('_id', '')).klass
         
     | 
| 
      
 392 
     | 
    
         
            +
                                  return true if rel_id.present? && !klass.visible_for(user: user).pluck(:id).include?(rel_id)
         
     | 
| 
      
 393 
     | 
    
         
            +
                                end
         
     | 
| 
      
 394 
     | 
    
         
            +
             
     | 
| 
      
 395 
     | 
    
         
            +
                                params.select { |k, _| k.to_s.end_with?('_ids') }.each do |many_relation, rel_ids|
         
     | 
| 
      
 396 
     | 
    
         
            +
                                  klass = created_resource.class.reflect_on_association(many_relation.to_s.gsub('_ids', '').pluralize).klass
         
     | 
| 
      
 397 
     | 
    
         
            +
                                  ids = klass.visible_for(user: user).pluck(:id)
         
     | 
| 
      
 398 
     | 
    
         
            +
                                  rel_ids.each { |id| return true if id.present? && !ids.include?(id) }
         
     | 
| 
      
 399 
     | 
    
         
            +
                                end
         
     | 
| 
      
 400 
     | 
    
         
            +
                                false
         
     | 
| 
      
 401 
     | 
    
         
            +
                              end
         
     | 
| 
      
 402 
     | 
    
         
            +
             
     | 
| 
      
 403 
     | 
    
         
            +
                            end
         
     | 
| 
       405 
404 
     | 
    
         | 
| 
       406 
405 
     | 
    
         
             
                    STRING
         
     | 
| 
       407 
406 
     | 
    
         
             
                  )
         
     | 
| 
       408 
407 
     | 
    
         
             
                end
         
     | 
| 
       409 
408 
     | 
    
         | 
| 
       410 
409 
     | 
    
         
             
                def write_at(file_name, line, data)
         
     | 
| 
       411 
     | 
    
         
            -
                  open(file_name,  
     | 
| 
      
 410 
     | 
    
         
            +
                  open(file_name, "r+") do |f|
         
     | 
| 
       412 
411 
     | 
    
         
             
                    while (line -= 1).positive?
         
     | 
| 
       413 
412 
     | 
    
         
             
                      f.readline
         
     | 
| 
       414 
413 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -419,6 +418,5 @@ end 
     | 
|
| 
       419 
418 
     | 
    
         
             
                    f.write rest
         
     | 
| 
       420 
419 
     | 
    
         
             
                  end
         
     | 
| 
       421 
420 
     | 
    
         
             
                end
         
     | 
| 
       422 
     | 
    
         
            -
             
     | 
| 
       423 
421 
     | 
    
         
             
              end
         
     | 
| 
       424 
422 
     | 
    
         
             
            end
         
     | 
| 
         @@ -451,11 +451,16 @@ module Graphql 
     | 
|
| 
       451 
451 
     | 
    
         
             
                end
         
     | 
| 
       452 
452 
     | 
    
         | 
| 
       453 
453 
     | 
    
         
             
                def irep_node(name, paginated: false)
         
     | 
| 
       454 
     | 
    
         
            -
                   
     | 
| 
      
 454 
     | 
    
         
            +
                  until @context.query.lookahead.ast_nodes.first.children[@context[:query_index]].is_a?(GraphQL::Language::Nodes::Field)
         
     | 
| 
      
 455 
     | 
    
         
            +
                    @context[:query_index] += 1
         
     | 
| 
      
 456 
     | 
    
         
            +
                  end
         
     | 
| 
      
 457 
     | 
    
         
            +
             
     | 
| 
      
 458 
     | 
    
         
            +
                  children = @context.query.lookahead.ast_nodes.first.children[@context[:query_index]].children
         
     | 
| 
       455 
459 
     | 
    
         
             
                  result = if paginated
         
     | 
| 
       456 
     | 
    
         
            -
                     
     | 
| 
      
 460 
     | 
    
         
            +
                    children.find { |n| n.name == "data" }.children
         
     | 
| 
       457 
461 
     | 
    
         
             
                  else
         
     | 
| 
       458 
     | 
    
         
            -
                     
     | 
| 
      
 462 
     | 
    
         
            +
                    prepend = children.find { |n| n.name == model_name.singularize }
         
     | 
| 
      
 463 
     | 
    
         
            +
                    prepend.present? ? prepend.children : children
         
     | 
| 
       459 
464 
     | 
    
         
             
                  end
         
     | 
| 
       460 
465 
     | 
    
         
             
                  @context[:query_index] += 1
         
     | 
| 
       461 
466 
     | 
    
         
             
                  result
         
     | 
| 
         @@ -471,7 +476,7 @@ module Graphql 
     | 
|
| 
       471 
476 
     | 
    
         | 
| 
       472 
477 
     | 
    
         
             
                  return if fields.blank?
         
     | 
| 
       473 
478 
     | 
    
         | 
| 
       474 
     | 
    
         
            -
                  fields.each_with_object({}) do |node, h|
         
     | 
| 
      
 479 
     | 
    
         
            +
                  res = fields.each_with_object({}) do |node, h|
         
     | 
| 
       475 
480 
     | 
    
         
             
                    h[node.name.underscore] = node.children.blank? ? nil : parse_fields(node.children)
         
     | 
| 
       476 
481 
     | 
    
         
             
                  end
         
     | 
| 
       477 
482 
     | 
    
         
             
                end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: graphql-rails-api
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.9. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.9.81
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - poilon
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2022-11- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2022-11-24 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: graphql
         
     | 
| 
         @@ -83,11 +83,8 @@ files: 
     | 
|
| 
       83 
83 
     | 
    
         
             
            - MIT-LICENSE
         
     | 
| 
       84 
84 
     | 
    
         
             
            - README.md
         
     | 
| 
       85 
85 
     | 
    
         
             
            - Rakefile
         
     | 
| 
      
 86 
     | 
    
         
            +
            - lib/generators/auth0_authentication/auth0_authentication_generator.rb
         
     | 
| 
       86 
87 
     | 
    
         
             
            - lib/generators/graphql_add_fields/graphql_add_fields_generator.rb
         
     | 
| 
       87 
     | 
    
         
            -
            - lib/generators/graphql_all_connections/graphql_all_connections_generator.rb
         
     | 
| 
       88 
     | 
    
         
            -
            - lib/generators/graphql_mutations/graphql_bulk_create_mutations_generator.rb
         
     | 
| 
       89 
     | 
    
         
            -
            - lib/generators/graphql_mutations/graphql_bulk_update_mutations_generator.rb
         
     | 
| 
       90 
     | 
    
         
            -
            - lib/generators/graphql_mutations/graphql_mutations_generator.rb
         
     | 
| 
       91 
88 
     | 
    
         
             
            - lib/generators/graphql_rails_api/install_generator.rb
         
     | 
| 
       92 
89 
     | 
    
         
             
            - lib/generators/graphql_resource/USAGE
         
     | 
| 
       93 
90 
     | 
    
         
             
            - lib/generators/graphql_resource/graphql_resource_generator.rb
         
     | 
| 
         @@ -114,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       114 
111 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       115 
112 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       116 
113 
     | 
    
         
             
            requirements: []
         
     | 
| 
       117 
     | 
    
         
            -
            rubygems_version: 3. 
     | 
| 
      
 114 
     | 
    
         
            +
            rubygems_version: 3.3.7
         
     | 
| 
       118 
115 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       119 
116 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       120 
117 
     | 
    
         
             
            summary: Graphql rails api framework to create easily graphql api with rails
         
     | 
| 
         @@ -1,26 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class GraphqlAllConnectionsGenerator < Rails::Generators::NamedBase
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              def generate
         
     | 
| 
       4 
     | 
    
         
            -
                Graphql::Rails::Api::Config.query_resources.each do |resource|
         
     | 
| 
       5 
     | 
    
         
            -
                  dir = "app/graphql/#{resource.pluralize}"
         
     | 
| 
       6 
     | 
    
         
            -
                  generate_connection(dir, resource) if Dir.exist?(dir)
         
     | 
| 
       7 
     | 
    
         
            -
                end
         
     | 
| 
       8 
     | 
    
         
            -
              end
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              def generate_connection(dir, resource)
         
     | 
| 
       11 
     | 
    
         
            -
                FileUtils.mkdir_p(dir) unless File.directory?(dir)
         
     | 
| 
       12 
     | 
    
         
            -
                File.write(
         
     | 
| 
       13 
     | 
    
         
            -
                  "#{dir}/connection.rb",
         
     | 
| 
       14 
     | 
    
         
            -
                  <<~STRING
         
     | 
| 
       15 
     | 
    
         
            -
                    #{resource.pluralize.camelize}::Connection = #{resource.pluralize.camelize}::Type.define_connection do
         
     | 
| 
       16 
     | 
    
         
            -
                      name '#{resource.camelize}Connection'
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                      field :total_count, types.Int do
         
     | 
| 
       19 
     | 
    
         
            -
                        resolve ->(obj, _, _) { obj.nodes.count }
         
     | 
| 
       20 
     | 
    
         
            -
                      end
         
     | 
| 
       21 
     | 
    
         
            -
                    end
         
     | 
| 
       22 
     | 
    
         
            -
                  STRING
         
     | 
| 
       23 
     | 
    
         
            -
                )
         
     | 
| 
       24 
     | 
    
         
            -
              end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,30 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class GraphqlBulkCreateMutationsGenerator < Rails::Generators::NamedBase
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              def generate
         
     | 
| 
       4 
     | 
    
         
            -
                Graphql::Rails::Api::Config.query_resources.each do |resource|
         
     | 
| 
       5 
     | 
    
         
            -
                  dir = "#{Rails.root}/app/graphql/#{resource.pluralize}/mutations"
         
     | 
| 
       6 
     | 
    
         
            -
                  generate_bulk_create_mutation(dir, resource) if Dir.exist?(dir)
         
     | 
| 
       7 
     | 
    
         
            -
                end
         
     | 
| 
       8 
     | 
    
         
            -
              end
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              def generate_bulk_create_mutation(dir, resource)
         
     | 
| 
       11 
     | 
    
         
            -
                File.write(
         
     | 
| 
       12 
     | 
    
         
            -
                  "#{dir}/bulk_create.rb",
         
     | 
| 
       13 
     | 
    
         
            -
                  <<~STRING
         
     | 
| 
       14 
     | 
    
         
            -
                    #{resource_class(resource)}::Mutations::BulkCreate = GraphQL::Field.define do
         
     | 
| 
       15 
     | 
    
         
            -
                      description 'creates some #{resource_class(resource).pluralize}'
         
     | 
| 
       16 
     | 
    
         
            -
                      type types[#{resource_class(resource)}::Type]
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                      argument :#{resource}, types[#{resource_class(resource)}::Mutations::InputType]
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
                      resolve ApplicationService.call(:#{resource}, :bulk_create)
         
     | 
| 
       21 
     | 
    
         
            -
                    end
         
     | 
| 
       22 
     | 
    
         
            -
                  STRING
         
     | 
| 
       23 
     | 
    
         
            -
                )
         
     | 
| 
       24 
     | 
    
         
            -
              end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
              def resource_class(resource)
         
     | 
| 
       27 
     | 
    
         
            -
                resource.pluralize.camelize
         
     | 
| 
       28 
     | 
    
         
            -
              end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,30 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class GraphqlBulkUpdateMutationsGenerator < Rails::Generators::NamedBase
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              def generate
         
     | 
| 
       4 
     | 
    
         
            -
                Graphql::Rails::Api::Config.query_resources.each do |resource|
         
     | 
| 
       5 
     | 
    
         
            -
                  dir = "#{Rails.root}/app/graphql/#{resource.pluralize}/mutations"
         
     | 
| 
       6 
     | 
    
         
            -
                  generate_bulk_update_mutation(dir, resource) if Dir.exist?(dir)
         
     | 
| 
       7 
     | 
    
         
            -
                end
         
     | 
| 
       8 
     | 
    
         
            -
              end
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              def generate_bulk_update_mutation(dir, resource)
         
     | 
| 
       11 
     | 
    
         
            -
                File.write(
         
     | 
| 
       12 
     | 
    
         
            -
                  "#{dir}/bulk_update.rb",
         
     | 
| 
       13 
     | 
    
         
            -
                  <<~STRING
         
     | 
| 
       14 
     | 
    
         
            -
                    #{resource_class(resource)}::Mutations::BulkUpdate = GraphQL::Field.define do
         
     | 
| 
       15 
     | 
    
         
            -
                      description 'Updates some #{resource_class(resource).pluralize}'
         
     | 
| 
       16 
     | 
    
         
            -
                      type types[#{resource_class(resource)}::Type]
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                      argument :#{resource}, types[#{resource_class(resource)}::Mutations::InputType]
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
                      resolve ApplicationService.call(:#{resource}, :bulk_update)
         
     | 
| 
       21 
     | 
    
         
            -
                    end
         
     | 
| 
       22 
     | 
    
         
            -
                  STRING
         
     | 
| 
       23 
     | 
    
         
            -
                )
         
     | 
| 
       24 
     | 
    
         
            -
              end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
              def resource_class(resource)
         
     | 
| 
       27 
     | 
    
         
            -
                resource.pluralize.camelize
         
     | 
| 
       28 
     | 
    
         
            -
              end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,92 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class GraphqlMutationsGenerator < Rails::Generators::NamedBase
         
     | 
| 
       2 
     | 
    
         
            -
              def generate
         
     | 
| 
       3 
     | 
    
         
            -
                resource = file_name.underscore.singularize
         
     | 
| 
       4 
     | 
    
         
            -
                dir = "app/graphql/#{resource.pluralize}/mutations"
         
     | 
| 
       5 
     | 
    
         
            -
                FileUtils.mkdir_p(dir) unless File.directory?(dir)
         
     | 
| 
       6 
     | 
    
         
            -
                generate_create_mutation(dir, resource)
         
     | 
| 
       7 
     | 
    
         
            -
                generate_update_mutation(dir, resource)
         
     | 
| 
       8 
     | 
    
         
            -
                generate_destroy_mutation(dir, resource)
         
     | 
| 
       9 
     | 
    
         
            -
              end
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
              private
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              def generate_create_mutation(dir, resource)
         
     | 
| 
       14 
     | 
    
         
            -
                File.write(
         
     | 
| 
       15 
     | 
    
         
            -
                  "#{dir}/create.rb",
         
     | 
| 
       16 
     | 
    
         
            -
                  <<~STRING
         
     | 
| 
       17 
     | 
    
         
            -
                    module #{resource_class(resource)}
         
     | 
| 
       18 
     | 
    
         
            -
                      module Mutations
         
     | 
| 
       19 
     | 
    
         
            -
                        class Create < GraphQL::Schema::Mutation
         
     | 
| 
       20 
     | 
    
         
            -
                          graphql_name "Create#{resource_class(resource)}"
         
     | 
| 
       21 
     | 
    
         
            -
                          description "Create a #{resource_class(resource).singularize}"
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                          field :errors, [String], null: true
         
     | 
| 
       24 
     | 
    
         
            -
                          field :#{resource}, #{resource_class(resource)}::Type, null: true
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                          argument :attributes, #{resource_class(resource)}::Mutations::InputType, required: false
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                          def resolve(attributes:)
         
     | 
| 
       29 
     | 
    
         
            -
                            ApplicationService.call(:#{resource}, :create, context, attributes)
         
     | 
| 
       30 
     | 
    
         
            -
                          end
         
     | 
| 
       31 
     | 
    
         
            -
                        end
         
     | 
| 
       32 
     | 
    
         
            -
                      end
         
     | 
| 
       33 
     | 
    
         
            -
                    end
         
     | 
| 
       34 
     | 
    
         
            -
                  STRING
         
     | 
| 
       35 
     | 
    
         
            -
                )
         
     | 
| 
       36 
     | 
    
         
            -
              end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
              def generate_update_mutation(dir, resource)
         
     | 
| 
       39 
     | 
    
         
            -
                File.write(
         
     | 
| 
       40 
     | 
    
         
            -
                  "#{dir}/update.rb",
         
     | 
| 
       41 
     | 
    
         
            -
                  <<~STRING
         
     | 
| 
       42 
     | 
    
         
            -
                    module #{resource_class(resource)}
         
     | 
| 
       43 
     | 
    
         
            -
                      module Mutations
         
     | 
| 
       44 
     | 
    
         
            -
                        class Update < GraphQL::Schema::Mutation
         
     | 
| 
       45 
     | 
    
         
            -
                          graphql_name "Update#{resource_class(resource)}"
         
     | 
| 
       46 
     | 
    
         
            -
                          description "Update a #{resource_class(resource).singularize}"
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                          field :errors, [String], null: true
         
     | 
| 
       49 
     | 
    
         
            -
                          field :#{resource}, #{resource_class(resource)}::Type, null: true
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
                          argument :id, String, required: true
         
     | 
| 
       52 
     | 
    
         
            -
                          argument :attributes, #{resource_class(resource)}::Mutations::InputType, required: false
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                          def resolve(id:, attributes:)
         
     | 
| 
       55 
     | 
    
         
            -
                            ApplicationService.call(:#{resource}, :update, context, id, attributes)
         
     | 
| 
       56 
     | 
    
         
            -
                          end
         
     | 
| 
       57 
     | 
    
         
            -
                        end
         
     | 
| 
       58 
     | 
    
         
            -
                      end
         
     | 
| 
       59 
     | 
    
         
            -
                    end
         
     | 
| 
       60 
     | 
    
         
            -
                  STRING
         
     | 
| 
       61 
     | 
    
         
            -
                )
         
     | 
| 
       62 
     | 
    
         
            -
              end
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
              def generate_destroy_mutation(dir, resource)
         
     | 
| 
       65 
     | 
    
         
            -
                File.write(
         
     | 
| 
       66 
     | 
    
         
            -
                  "#{dir}/destroy.rb",
         
     | 
| 
       67 
     | 
    
         
            -
                  <<~STRING
         
     | 
| 
       68 
     | 
    
         
            -
                    module #{resource_class(resource)}
         
     | 
| 
       69 
     | 
    
         
            -
                      module Mutations
         
     | 
| 
       70 
     | 
    
         
            -
                        class Destroy < GraphQL::Schema::Mutation
         
     | 
| 
       71 
     | 
    
         
            -
                          graphql_name "Destroy#{resource_class(resource)}"
         
     | 
| 
       72 
     | 
    
         
            -
                          description "Destroy a #{resource_class(resource).singularize}"
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
                          field :errors, [String], null: true
         
     | 
| 
       75 
     | 
    
         
            -
                          field :#{resource}, #{resource_class(resource)}::Type, null: true
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
                          argument :id, String, required: true
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
                          def resolve(id:)
         
     | 
| 
       80 
     | 
    
         
            -
                            ApplicationService.call(:#{resource}, :destroy, context, id)
         
     | 
| 
       81 
     | 
    
         
            -
                          end
         
     | 
| 
       82 
     | 
    
         
            -
                        end
         
     | 
| 
       83 
     | 
    
         
            -
                      end
         
     | 
| 
       84 
     | 
    
         
            -
                    end
         
     | 
| 
       85 
     | 
    
         
            -
                  STRING
         
     | 
| 
       86 
     | 
    
         
            -
                )
         
     | 
| 
       87 
     | 
    
         
            -
              end
         
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
              def resource_class(resource)
         
     | 
| 
       90 
     | 
    
         
            -
                @resource_class ||= resource.pluralize.camelize
         
     | 
| 
       91 
     | 
    
         
            -
              end
         
     | 
| 
       92 
     | 
    
         
            -
            end
         
     |