lms-api 1.5.0 → 1.5.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f08796d33a3cdc324011e85cffaa2d44cd47daca12b2b77b8294e1024311ce57
4
- data.tar.gz: 5e6fe01d0f7564476a24740885f224c1e6c5f7f249a2c9e733482934dbcfdfd8
3
+ metadata.gz: 9cd1b4b836309477ea61ae5c2f09400e86d1b3e3ae422460c8faa31e70c049cb
4
+ data.tar.gz: 6798941f1e531beff1e49d6e1821c27047e168a2062060944f6ff7dab6525c15
5
5
  SHA512:
6
- metadata.gz: 4715e5c22aed0e4f021337c3007de2b2e33d667b28798479e303b1d269f92bc8f13b7f3c2393f0551f117c4318646ec0df615702d30f009165896af44dc72794
7
- data.tar.gz: 94b55f63c92acb1c78c69a25f3ff2cf87fe0a307254ac88dac18145793968ff75d343d1e6031fc628dc8edf0aa42fcfea0c6650da0d79e23a92f24961afa6b55
6
+ metadata.gz: e7b848ba5f6001cd556f58efaea3532490d598f9408e16deae40ffbeddd4c6cbba08c98e3f33166c65578e01d9836eeea68fd141cbaef2a50aef72bac81da75e
7
+ data.tar.gz: 64042bda319f8e32e76e9b51124ef2205bf20b0c4b6e593d204bfaade0cd4e03f18af7e1635eba568eac713ace2cba369c0d81b68a6a2a727e201d17811d1000
@@ -47,13 +47,13 @@ module CanvasApi
47
47
 
48
48
  # One file per Canvas graphql resolver
49
49
  canvas_graphql_resolver_renderer = CanvasApi::Render.new("./templates/rb_graphql_resolver.erb", api, resource, resource_api, operation, parameters, nil, nil)
50
- canvas_graphql_resolver_renderer.save("#{rb_graphql_app_path}/lib/lms/graphql/resolvers/canvas/#{canvas_graphql_resolver_renderer.nickname}.rb")
50
+ canvas_graphql_resolver_renderer.save("#{rb_graphql_app_path}/lib/lms_graphql/resolvers/canvas/#{canvas_graphql_resolver_renderer.nickname}.rb")
51
51
  rb_graphql_fields << CanvasApi::Render.new("./templates/rb_graphql_field.erb", api, resource, resource_api, operation, parameters, nil, nil).render
52
52
  else
53
53
  js_graphql_mutations << CanvasApi::Render.new("./templates/js_graphql_mutation.erb", api, resource, resource_api, operation, parameters, nil, nil).render
54
54
 
55
55
  rb_graphql_mutation_renderer = CanvasApi::Render.new("./templates/rb_graphql_mutation.erb", api, resource, resource_api, operation, parameters, nil, nil)
56
- rb_graphql_mutation_renderer.save("#{rb_graphql_app_path}/lib/lms/graphql/mutations/canvas/#{rb_graphql_mutation_renderer.nickname}.rb")
56
+ rb_graphql_mutation_renderer.save("#{rb_graphql_app_path}/lib/lms_graphql/mutations/canvas/#{rb_graphql_mutation_renderer.nickname}.rb")
57
57
  rb_graphql_mutations << CanvasApi::Render.new("./templates/rb_graphql_mutation_include.erb", api, resource, resource_api, operation, parameters, nil, nil).render
58
58
  end
59
59
 
@@ -65,8 +65,11 @@ module CanvasApi
65
65
  end
66
66
 
67
67
  # Generate one file for each Canvas graphql type
68
- canvas_graphql_renderer = CanvasApi::Render.new("./templates/rb_graphql_model.erb", api, resource, nil, nil, nil, nil, model)
69
- canvas_graphql_renderer.save("#{rb_graphql_app_path}/lib/lms/graphql/types/canvas/#{model['id'].underscore.singularize}.rb")
68
+ canvas_graphql_type_render = CanvasApi::Render.new("./templates/rb_graphql_type.erb", api, resource, nil, nil, nil, nil, model)
69
+ canvas_graphql_type_render.save("#{rb_graphql_app_path}/lib/lms_graphql/types/canvas/#{model['id'].underscore.singularize}.rb")
70
+
71
+ canvas_graphql_input_render = CanvasApi::Render.new("./templates/rb_graphql_input_type.erb", api, resource, nil, nil, nil, nil, model)
72
+ canvas_graphql_input_render.save("#{rb_graphql_app_path}/lib/lms_graphql/types/canvas/#{model['id'].underscore.singularize}_input.rb")
70
73
  end
71
74
 
72
75
  # Generate one file of constants for every LMS API
@@ -85,8 +88,8 @@ module CanvasApi
85
88
  CanvasApi::Render.new("./templates/js_graphql_mutations.erb", nil, nil, nil, nil, nil, js_graphql_mutations, nil).save("#{server_app_path}/lib/canvas/graphql_mutations.js")
86
89
 
87
90
  # GraphQL Ruby
88
- CanvasApi::Render.new("./templates/rb_graphql_root_query.erb", nil, nil, nil, nil, nil, rb_graphql_fields, nil).save("#{rb_graphql_app_path}/lib/lms/graphql/types/canvas/query_type.rb")
89
- CanvasApi::Render.new("./templates/rb_graphql_mutations.erb", nil, nil, nil, nil, nil, rb_graphql_mutations, nil).save("#{rb_graphql_app_path}/lib/lms/graphql/mutations/canvas/mutations.rb")
91
+ CanvasApi::Render.new("./templates/rb_graphql_root_query.erb", nil, nil, nil, nil, nil, rb_graphql_fields, nil).save("#{rb_graphql_app_path}/lib/lms_graphql/types/canvas/query_type.rb")
92
+ CanvasApi::Render.new("./templates/rb_graphql_mutations.erb", nil, nil, nil, nil, nil, rb_graphql_mutations, nil).save("#{rb_graphql_app_path}/lib/lms_graphql/mutations/canvas/mutations.rb")
90
93
  end
91
94
 
92
95
  end
@@ -20,14 +20,18 @@ module CanvasApi
20
20
  end
21
21
  end
22
22
 
23
- def parameters_doc(operation)
23
+ def parameters_doc(operation, method)
24
24
  if operation["parameters"].present?
25
25
  parameters = operation["parameters"].
26
26
  reject { |p| p["paramType"] == "path" }.
27
27
  map { |p| "#{p['name']}#{p['required'] ? ' (required)' : ''}" }.
28
28
  compact
29
29
  if parameters.present?
30
- "\n// const query = {\n// #{parameters.join("\n// ")}\n// }"
30
+ if method == "get"
31
+ "\n// const query = {\n// #{parameters.join("\n// ")}\n// }"
32
+ else
33
+ "\n// const body = {\n// #{parameters.join("\n// ")}\n// }"
34
+ end
31
35
  else
32
36
  ""
33
37
  end
@@ -1,14 +1,17 @@
1
1
  module CanvasApi
2
2
  module GraphQLHelpers
3
3
 
4
- def graphql_type(name, property, return_type = false, model = nil)
4
+ def graphql_type(name, property, return_type = false, model = nil, input_type = false)
5
5
  if property["$ref"]
6
- canvas_name(property['$ref'])
6
+ canvas_name(property['$ref'], input_type)
7
7
  elsif property["allowableValues"]
8
8
  enum_class_name(model, name)
9
9
  else
10
10
  type = property["type"].downcase
11
+
11
12
  case type
13
+ when "{success: true}"
14
+ "String"
12
15
  when "integer", "string", "boolean", "datetime", "number", "date"
13
16
  graphql_primitive(name, type, property["format"])
14
17
  when "void"
@@ -22,9 +25,9 @@ module CanvasApi
22
25
  elsif property["items"]["$ref"] == "[String]"
23
26
  "[String]"
24
27
  elsif property["items"]["$ref"] == "DateTime" || property["items"]["$ref"] == "Date"
25
- "[LMS::GraphQL::Types::DateTimeType]"
28
+ "[LMSGraphQL::Types::DateTimeType]"
26
29
  elsif property["items"]["$ref"]
27
- "[#{canvas_name(property["items"]["$ref"])}]"
30
+ "[#{canvas_name(property["items"]["$ref"], input_type)}]"
28
31
  else
29
32
  graphql_primitive(name, property["items"]["type"].downcase, property["items"]["format"])
30
33
  end
@@ -41,7 +44,7 @@ module CanvasApi
41
44
  # HACK There's no TermsOfService object so we return a string
42
45
  "String"
43
46
  elsif return_type
44
- canvas_name(property["type"])
47
+ canvas_name(property["type"], input_type)
45
48
  else
46
49
  puts "Unable to match '#{name}' requested property '#{property}' to GraphQL Type."
47
50
  "String"
@@ -50,9 +53,9 @@ module CanvasApi
50
53
  end
51
54
  end
52
55
 
53
- def canvas_name(type)
56
+ def canvas_name(type, input_type = false)
54
57
  name = type.split('|').first.strip.singularize
55
- "LMS::GraphQL::Types::Canvas::#{name}"
58
+ "LMSGraphQL::Types::Canvas::Canvas#{name}#{input_type ? 'Input' : ''}"
56
59
  end
57
60
 
58
61
  def graphql_primitive(name, type, format)
@@ -74,9 +77,9 @@ module CanvasApi
74
77
  when "boolean"
75
78
  "Boolean"
76
79
  when "datetime"
77
- "LMS::GraphQL::Types::DateTimeType"
80
+ "LMSGraphQL::Types::DateTimeType"
78
81
  when "date"
79
- "LMS::GraphQL::Types::DateTimeType"
82
+ "LMSGraphQL::Types::DateTimeType"
80
83
  else
81
84
  raise "Unable to match requested primitive '#{type}' to GraphQL Type."
82
85
  end
@@ -107,7 +110,7 @@ module CanvasApi
107
110
  end
108
111
  end
109
112
 
110
- def graphql_fields(model, resource_name)
113
+ def graphql_fields(model, resource_name, argument = false)
111
114
  if !model["properties"]
112
115
  puts "NO properties for #{resource_name} !!!!!!!!!!!!!!!!!!!!!"
113
116
  return []
@@ -118,9 +121,15 @@ module CanvasApi
118
121
  description << "Example: #{safe_rb(property['example'])}".gsub("..", "").gsub("\n", " ") if property["example"].present?
119
122
 
120
123
  if type = graphql_type(name, property, false, model)
121
- <<-CODE
124
+ if argument
125
+ <<-CODE
126
+ argument :#{name.underscore}, #{type}, "#{description}", required: false
127
+ CODE
128
+ else
129
+ <<-CODE
122
130
  field :#{name.underscore}, #{type}, "#{description}", null: true
123
- CODE
131
+ CODE
132
+ end
124
133
  else
125
134
  puts "Unable to determine type for #{name}"
126
135
  end
@@ -128,7 +137,7 @@ module CanvasApi
128
137
  end
129
138
 
130
139
  def type_from_operation(operation)
131
- graphql_type("operation", operation, true)
140
+ type = graphql_type("operation", operation, true)
132
141
  end
133
142
 
134
143
  def name_from_operation(operation)
@@ -141,7 +150,7 @@ module CanvasApi
141
150
  end
142
151
 
143
152
  def is_basic_type(type)
144
- ["Int", "String", "Boolean", "LMS::GraphQL::Types::DateTimeType", "Float", "ID"].include?(type)
153
+ ["Int", "String", "Boolean", "LMSGraphQL::Types::DateTimeType", "Float", "ID"].include?(type)
145
154
  end
146
155
 
147
156
  def no_brackets(str)
@@ -149,7 +158,7 @@ module CanvasApi
149
158
  end
150
159
 
151
160
  def make_file_name(str)
152
- str.underscore.split("/").last.split("|").first.strip.singularize
161
+ str.underscore.split("/").last.split("|").first.gsub("canvas_", "").strip.singularize
153
162
  end
154
163
 
155
164
  def require_from_operation(operation)
@@ -182,7 +191,10 @@ module CanvasApi
182
191
  end
183
192
 
184
193
  def nested_arg(str)
185
- str.gsub("[", "_").gsub("]", "").gsub("*", "star").gsub("<X>", "_x_")
194
+ # TODO/HACK we are replacing values from the string here to get things to work for now.
195
+ # However, removing these symbols means that the methods that use the arguments
196
+ # generated herein will have bugs and be unusable.
197
+ str.gsub("[", "_").gsub("]", "").gsub("*", "star").gsub("<", "_").gsub(">", "_")
186
198
  end
187
199
 
188
200
  end
@@ -1,4 +1,4 @@
1
- <% parameters_doc = parameters_doc(operation) -%>
1
+ <% parameters_doc = parameters_doc(operation, @method.downcase) -%>
2
2
  // <%=@summary%>
3
3
  // <%=@notes%>
4
4
  //
@@ -6,5 +6,5 @@
6
6
  // API Url: <%=@api_url%>
7
7
  //
8
8
  // Example:<%=parameters_doc%>
9
- // return canvasRequest(<%=@nickname%>, {<%=@args.join(', ')%>}<%= parameters_doc.present? ? ", query" : ""%>);
9
+ // return canvasRequest(<%=@nickname%>, {<%=@args.present? ? @args.join(', ') : ""%><%= @method.downcase == "get" && parameters_doc.present? ? ", ...query" : ""%>}<%= @method.downcase != "get" && parameters_doc.present? ? ", body" : ""%>);
10
10
  export const <%=@nickname.camelcase(:lower)%> = { type: '<%=@nickname.upcase%>', method: '<%=@method.downcase%>', key: '<%=reducer_key(@nickname, @args)%>', required: <%=js_args(@args)%> };
@@ -1,3 +1,3 @@
1
- field :<%= @nickname %>,
2
- resolver: LMS::GraphQL::Resolvers::Canvas::<%= @nickname.classify %>,
3
- description: "<%= @summary %>. <%= @notes.gsub(/\n+/, " ").gsub("//", " ").gsub('"', "'") %>"
1
+ field :<%= @nickname %>,
2
+ resolver: LMSGraphQL::Resolvers::Canvas::<%= @nickname.classify %>,
3
+ description: "<%= @summary %>. <%= @notes.gsub(/\n+/, " ").gsub("//", " ").gsub('"', "'") %>"
@@ -0,0 +1,14 @@
1
+ require_relative "../canvas_base_input_type"
2
+ <%= require_from_properties(@model) %>
3
+
4
+ module LMSGraphQL
5
+ module Types
6
+ module Canvas
7
+ <%=graphql_field_enums(@model)-%>
8
+ class Canvas<%=@model['id'].singularize%>Input < BaseInputObject
9
+ description "<%=@description%>. API Docs: https://canvas.instructure.com/doc/api/<%=@name%>.html"
10
+ <%=graphql_fields(@model, @resource_name, true).join(" ")%>
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,22 +1,20 @@
1
1
  require_relative "../canvas_base_mutation"
2
2
  <%= require_from_operation(operation) -%>
3
3
 
4
- module LMS
5
- module GraphQL
6
- module Mutations
7
- module Canvas
8
- class <%= @nickname.classify %> < CanvasBaseMutation
9
- <%= @parameters.map{|p| " argument :#{nested_arg(p["name"])}, #{graphql_type(p["name"], p)}, required: #{p["required"]}"}.join("\n") %>
10
- field :<%= name_from_operation(operation) %>, <%= type_from_operation(operation) %>, null: false
11
- def resolve(<%= @parameters.map{|p| "#{nested_arg(p['name'])}#{p['required'] ? ':' : ': nil'}"}.join(", ") %>)
12
- ctx[:canvas_api].proxy(
13
- "<%= @nickname.upcase %>",
14
- {
15
- <%= @parameters.map{|p| " \"#{p['name']}\": #{nested_arg(p['name'])}"}.join(",\n") -%>
16
- },
17
- nil,
18
- ).parsed_response
19
- end
4
+ module LMSGraphQL
5
+ module Mutations
6
+ module Canvas
7
+ class <%= @nickname.classify %> < BaseMutation
8
+ <%= @parameters.map{|p| " argument :#{nested_arg(p["name"])}, #{graphql_type(p["name"], p, false, nil, true)}, required: #{p["required"]}"}.join("\n") %>
9
+ field :<%= name_from_operation(operation) %>, <%= type_from_operation(operation) %>, null: false
10
+ def resolve(<%= @parameters.map{|p| "#{nested_arg(p['name'])}#{p['required'] ? ':' : ': nil'}"}.join(", ") %>)
11
+ context[:canvas_api].call("<%= @nickname.upcase %>").proxy(
12
+ "<%= @nickname.upcase %>",
13
+ {
14
+ <%= @parameters.map{|p| " \"#{p['name']}\": #{nested_arg(p['name'])}"}.join(",\n") -%>
15
+ },
16
+ nil,
17
+ ).parsed_response
20
18
  end
21
19
  end
22
20
  end
@@ -1 +1 @@
1
- field :<%= @nickname %>, mutation: LMS::GraphQL::Mutations::Canvas::<%= @nickname.classify %>
1
+ field :<%= @nickname %>, mutation: LMSGraphQL::Mutations::Canvas::<%= @nickname.classify %>
@@ -1,16 +1,14 @@
1
- require "lms/utils"
2
- require "lms/graphql/mutations/canvas_base_mutation"
1
+ require_relative "../../utils"
2
+ require_relative "../../types/canvas_base_type"
3
3
  require_all(File.absolute_path(__FILE__), "../../mutations/canvas/")
4
4
 
5
- module LMS
6
- module GraphQL
7
- module Mutations
8
- module Canvas
9
- class MutationType < CanvasBaseMutation
10
- description "Canvas API mutations"
5
+ module LMSGraphQL
6
+ module Mutations
7
+ module Canvas
8
+ class MutationType < LMSGraphQL::Types::Canvas::BaseType
9
+ description "Canvas API mutations"
11
10
 
12
- <%= @content.join("\n ") %>
13
- end
11
+ <%= @content.join("\n ") %>
14
12
  end
15
13
  end
16
14
  end
@@ -1,22 +1,20 @@
1
1
  require_relative "../canvas_base_resolver"
2
2
  <%= require_from_operation(operation) -%>
3
3
 
4
- module LMS
5
- module GraphQL
6
- module Resolvers
7
- module Canvas
8
- class <%= @nickname.classify %> < CanvasBaseResolver
9
- type <%= type_from_operation(operation) %>, null: false
10
- <%= @parameters.map{|p| " argument :#{nested_arg(p["name"])}, #{graphql_type(p["name"], p)}, required: #{p["required"]}"}.join("\n") %>
11
- def resolve(<%= @parameters.map{|p| "#{nested_arg(p['name'])}#{p['required'] ? ':' : ': nil'}"}.join(", ") %>)
12
- context[:canvas_api].proxy(
13
- "<%= @nickname.upcase %>",
14
- {
15
- <%= @parameters.map{|p| " \"#{p['name']}\": #{nested_arg(p['name'])}"}.join(",\n") -%>
16
- },
17
- nil,
18
- ).parsed_response
19
- end
4
+ module LMSGraphQL
5
+ module Resolvers
6
+ module Canvas
7
+ class <%= @nickname.classify %> < CanvasBaseResolver
8
+ type <%= type_from_operation(operation) %>, null: false
9
+ <%= @parameters.map{|p| " argument :#{nested_arg(p["name"])}, #{graphql_type(p["name"], p)}, required: #{p["required"]}"}.join("\n") %>
10
+ def resolve(<%= @parameters.map{|p| "#{nested_arg(p['name'])}#{p['required'] ? ':' : ': nil'}"}.join(", ") %>)
11
+ context[:canvas_api].call("<%= @nickname.upcase %>").proxy(
12
+ "<%= @nickname.upcase %>",
13
+ {
14
+ <%= @parameters.map{|p| " \"#{p['name']}\": #{nested_arg(p['name'])}"}.join(",\n") -%>
15
+ },
16
+ nil,
17
+ ).parsed_response
20
18
  end
21
19
  end
22
20
  end
@@ -1,15 +1,13 @@
1
- require_relative "../../../utils"
1
+ require_relative "../../utils"
2
2
  require_relative "../canvas_base_type"
3
3
  require_all(File.absolute_path(__FILE__), "../../resolvers/canvas/")
4
4
 
5
- module LMS
6
- module GraphQL
7
- module Types
8
- module Canvas
9
- class QueryType < BaseType
10
- description "The root query of Canvas schema"
11
- <%= @content.join("\n\n ") %>
12
- end
5
+ module LMSGraphQL
6
+ module Types
7
+ module Canvas
8
+ class QueryType < BaseType
9
+ description "The root query of Canvas schema"
10
+ <%= @content.join("\n\n ") %>
13
11
  end
14
12
  end
15
13
  end
@@ -0,0 +1,14 @@
1
+ require_relative "../canvas_base_type"
2
+ <%= require_from_properties(@model) %>
3
+
4
+ module LMSGraphQL
5
+ module Types
6
+ module Canvas
7
+ <%=graphql_field_enums(@model)-%>
8
+ class Canvas<%=@model['id'].singularize%> < BaseType
9
+ description "<%=@description%>. API Docs: https://canvas.instructure.com/doc/api/<%=@name%>.html"
10
+ <%=graphql_fields(@model, @resource_name).join(" ")%>
11
+ end
12
+ end
13
+ end
14
+ end
@@ -337,7 +337,9 @@ module LMS
337
337
  query_parameters << :page
338
338
  query_parameters << :as_user_id
339
339
 
340
- allowed_params = params.slice(*query_parameters)
340
+ allowed_params = params.
341
+ slice(*query_parameters).
342
+ reject { |key, value| value.nil? }
341
343
 
342
344
  if allowed_params.present?
343
345
  "#{uri}?#{allowed_params.to_query}"
@@ -1,3 +1,3 @@
1
1
  module LMS
2
- VERSION = "1.5.0".freeze
2
+ VERSION = "1.5.1".freeze
3
3
  end
@@ -13,7 +13,7 @@ namespace :canvas do
13
13
  desc "Scrape the LMS api"
14
14
  task :api do
15
15
  current_path = File.expand_path(File.dirname(__FILE__))
16
- client_app_path = File.expand_path(File.join(current_path, "../../../atomic-client/client/libs/canvas/constants"))
16
+ client_app_path = File.expand_path(File.join(current_path, "../../../atomic-canvas/src/constants"))
17
17
  server_app_path = File.expand_path(File.join(current_path, "../../../atomic-lti"))
18
18
  elixir_app_path = File.expand_path(File.join(current_path, "../../../catalyst"))
19
19
  rb_graphql_app_path = File.expand_path(File.join(current_path, "../../../lms_graphql_api"))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lms-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Atomic Jolt
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2018-06-15 00:00:00.000000000 Z
13
+ date: 2018-08-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -129,12 +129,13 @@ files:
129
129
  - lib/canvas_api/templates/js_url.erb
130
130
  - lib/canvas_api/templates/js_urls.erb
131
131
  - lib/canvas_api/templates/rb_graphql_field.erb
132
- - lib/canvas_api/templates/rb_graphql_model.erb
132
+ - lib/canvas_api/templates/rb_graphql_input_type.erb
133
133
  - lib/canvas_api/templates/rb_graphql_mutation.erb
134
134
  - lib/canvas_api/templates/rb_graphql_mutation_include.erb
135
135
  - lib/canvas_api/templates/rb_graphql_mutations.erb
136
136
  - lib/canvas_api/templates/rb_graphql_resolver.erb
137
137
  - lib/canvas_api/templates/rb_graphql_root_query.erb
138
+ - lib/canvas_api/templates/rb_graphql_type.erb
138
139
  - lib/canvas_api/templates/rb_url.erb
139
140
  - lib/canvas_api/templates/rb_urls.erb
140
141
  - lib/lms/canvas.rb
@@ -1,16 +0,0 @@
1
- require_relative "../canvas_base_type"
2
- <%= require_from_properties(@model) %>
3
-
4
- module LMS
5
- module GraphQL
6
- module Types
7
- module Canvas
8
- <%=graphql_field_enums(@model)-%>
9
- class <%=@model['id'].singularize%> < BaseType
10
- description "<%=@description%>. API Docs: https://canvas.instructure.com/doc/api/<%=@name%>.html"
11
- <%=graphql_fields(@model, @resource_name).join(" ")%>
12
- end
13
- end
14
- end
15
- end
16
- end