souls 0.51.2 → 0.52.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -1
  3. data/exe/souls +4 -202
  4. data/lib/souls/api/generate/application.rb +97 -94
  5. data/lib/souls/api/generate/connection.rb +5 -4
  6. data/lib/souls/api/generate/edge.rb +5 -4
  7. data/lib/souls/api/generate/index.rb +0 -1
  8. data/lib/souls/api/generate/manager.rb +9 -7
  9. data/lib/souls/api/generate/model.rb +16 -18
  10. data/lib/souls/api/generate/mutation.rb +217 -218
  11. data/lib/souls/api/generate/policy.rb +5 -5
  12. data/lib/souls/api/generate/query.rb +51 -51
  13. data/lib/souls/api/generate/resolver.rb +115 -115
  14. data/lib/souls/api/generate/rspec_factory.rb +53 -53
  15. data/lib/souls/api/generate/rspec_model.rb +5 -5
  16. data/lib/souls/api/generate/rspec_mutation.rb +178 -178
  17. data/lib/souls/api/generate/rspec_policy.rb +5 -5
  18. data/lib/souls/api/generate/rspec_query.rb +111 -111
  19. data/lib/souls/api/generate/rspec_resolver.rb +163 -163
  20. data/lib/souls/api/generate/type.rb +66 -66
  21. data/lib/souls/api/index.rb +7 -4
  22. data/lib/souls/api/update/index.rb +15 -0
  23. data/lib/souls/api/update/mutation.rb +68 -64
  24. data/lib/souls/api/update/resolver.rb +59 -60
  25. data/lib/souls/api/update/rspec_factory.rb +40 -39
  26. data/lib/souls/api/update/rspec_mutation.rb +84 -83
  27. data/lib/souls/api/update/rspec_resolver.rb +70 -69
  28. data/lib/souls/api/update/type.rb +39 -38
  29. data/lib/souls/cli/console/index.rb +13 -1
  30. data/lib/souls/cli/create/index.rb +97 -93
  31. data/lib/souls/cli/db/index.rb +122 -1
  32. data/lib/souls/cli/docker/index.rb +30 -38
  33. data/lib/souls/cli/gcloud/compute/index.rb +100 -98
  34. data/lib/souls/cli/gcloud/iam/index.rb +84 -69
  35. data/lib/souls/cli/gcloud/index.rb +36 -35
  36. data/lib/souls/cli/gcloud/pubsub/subscriptions.rb +40 -27
  37. data/lib/souls/cli/gcloud/pubsub/topics.rb +16 -10
  38. data/lib/souls/cli/gcloud/run/index.rb +23 -17
  39. data/lib/souls/cli/gcloud/sql/index.rb +66 -47
  40. data/lib/souls/cli/index.rb +3 -20
  41. data/lib/souls/cli/init/index.rb +140 -140
  42. data/lib/souls/cli/release/release.rb +106 -105
  43. data/lib/souls/cli/server/index.rb +12 -1
  44. data/lib/souls/cli/sync/conf.rb +39 -38
  45. data/lib/souls/cli/sync/model.rb +19 -20
  46. data/lib/souls/cli/sync/pubsub.rb +69 -70
  47. data/lib/souls/cli/upgrade/gemfile.rb +108 -0
  48. data/lib/souls/cli/upgrade/index.rb +1 -1
  49. data/lib/souls/cli.rb +57 -0
  50. data/lib/souls/index.rb +1 -5
  51. data/lib/souls/version.rb +1 -1
  52. data/lib/souls/versions/.souls_api_version +1 -1
  53. data/lib/souls/versions/.souls_worker_version +1 -1
  54. data/lib/souls/worker/generate/index.rb +1 -1
  55. data/lib/souls/worker/generate/job.rb +45 -0
  56. data/lib/souls/worker/generate/mailer.rb +38 -43
  57. data/lib/souls/worker/index.rb +3 -1
  58. data/lib/souls.rb +2 -0
  59. metadata +19 -5
  60. data/lib/souls/api/generate/migration.rb +0 -51
  61. data/lib/souls/cli/upgrade/gem_update.rb +0 -107
  62. data/lib/souls/worker/generate/mutation.rb +0 -44
@@ -1,6 +1,7 @@
1
1
  module Souls
2
- module Api::Generate
3
- def self.edge(class_name: "user")
2
+ class Generate < Thor
3
+ desc "edge [CLASS_NAME]", "Generate GraphQL Edge from schema.rb"
4
+ def edge(class_name)
4
5
  file_dir = "./app/graphql/types/edges"
5
6
  FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
6
7
  singularized_class_name = class_name.underscore.singularize
@@ -14,8 +15,8 @@ module Souls
14
15
  end
15
16
  puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
16
17
  file_path
17
- rescue StandardError => e
18
- raise(StandardError, e)
18
+ rescue Thor::Error => e
19
+ raise(Thor::Error, e)
19
20
  end
20
21
  end
21
22
  end
@@ -13,7 +13,6 @@ require_relative "./type"
13
13
  require_relative "./edge"
14
14
  require_relative "./connection"
15
15
  require_relative "./application"
16
- require_relative "./migration"
17
16
  require_relative "./manager"
18
17
 
19
18
  # require_paths = []
@@ -1,18 +1,20 @@
1
1
  module Souls
2
- module Api::Generate
3
- def self.manager(class_name: "user", mutation: "user_login")
2
+ class Generate < Thor
3
+ desc "manager [MANAGER_NAME]", "Generate GraphQL Mutation Template"
4
+ method_option :mutation, aliases: "--mutation", required: true, desc: "Mutation File Name"
5
+ def manager(class_name)
4
6
  singularized_class_name = class_name.underscore.singularize
5
7
  file_dir = "./app/graphql/mutations/managers/#{singularized_class_name}_manager"
6
8
  FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
7
- file_path = "#{file_dir}/#{mutation}.rb"
9
+ file_path = "#{file_dir}/#{options[:mutation]}.rb"
8
10
  raise(StandardError, "Already Exist!") if File.exist?(file_path)
9
11
 
10
12
  File.open(file_path, "w") do |f|
11
13
  f.write(<<~TEXT)
12
14
  module Mutations
13
15
  module Managers::#{singularized_class_name.camelize}Manager
14
- class #{mutation.underscore.camelize} < BaseMutation
15
- description "#{mutation} description"
16
+ class #{options[:mutation].underscore.camelize} < BaseMutation
17
+ description "#{options[:mutation]} description"
16
18
  ## Edit `argument` and `field`
17
19
  argument :argment, String, required: true
18
20
 
@@ -30,8 +32,8 @@ module Souls
30
32
  end
31
33
  puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
32
34
  file_path
33
- rescue StandardError => e
34
- raise(StandardError, e)
35
+ rescue Thor::Error => e
36
+ raise(Thor::Error, e)
35
37
  end
36
38
  end
37
39
  end
@@ -1,24 +1,22 @@
1
1
  module Souls
2
- module Api
3
- module Generate
4
- ## Generate Model
5
- def self.model(class_name: "user")
6
- file_dir = "./app/models/"
7
- FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
8
- file_path = "#{file_dir}#{class_name.singularize}.rb"
9
- return "Model already exist! #{file_path}" if File.exist?(file_path)
2
+ class Generate < Thor
3
+ desc "model [CLASS_NAME]", "Generate Model Template"
4
+ def model(class_name)
5
+ file_dir = "./app/models/"
6
+ FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
7
+ file_path = "#{file_dir}#{class_name.singularize}.rb"
8
+ return "Model already exist! #{file_path}" if File.exist?(file_path)
10
9
 
11
- File.open(file_path, "w") do |f|
12
- f.write(<<~TEXT)
13
- class #{class_name.camelize} < ActiveRecord::Base
14
- end
15
- TEXT
16
- end
17
- puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
18
- file_path
19
- rescue StandardError => e
20
- raise(StandardError, e)
10
+ File.open(file_path, "w") do |f|
11
+ f.write(<<~TEXT)
12
+ class #{class_name.camelize} < ActiveRecord::Base
13
+ end
14
+ TEXT
21
15
  end
16
+ puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
17
+ file_path
18
+ rescue Thor::Error => e
19
+ raise(Thor::Error, e)
22
20
  end
23
21
  end
24
22
  end
@@ -1,288 +1,287 @@
1
1
  module Souls
2
- module Api::Generate
3
- ## Generate 4 Mutations - ["create", "update", "delete", "destroy_delete"]
4
- ## 1.Mutation - Create
5
- class << self
6
- def create_mutation_head(class_name: "user")
7
- singularized_class_name = class_name.singularize.underscore
8
- dir_name = "./app/graphql/mutations/base/#{singularized_class_name}"
9
- FileUtils.mkdir_p(dir_name) unless Dir.exist?(dir_name)
10
- file_path = "./app/graphql/mutations/base/#{singularized_class_name}/create_#{singularized_class_name}.rb"
11
- File.open(file_path, "w") do |new_line|
12
- new_line.write(<<~TEXT)
13
- module Mutations
14
- module Base::#{singularized_class_name.camelize}
15
- class Create#{singularized_class_name.camelize} < BaseMutation
16
- field :#{singularized_class_name}_edge, Types::#{singularized_class_name.camelize}Type.edge_type, null: false
17
- field :error, String, null: true
2
+ class Generate < Thor
3
+ desc "mutation [CLASS_NAME]", "Generate GraphQL Mutation from schema.rb"
4
+ def mutation(class_name)
5
+ singularized_class_name = class_name.singularize
6
+ file_dir = "./app/graphql/mutations/base"
7
+ FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
8
+ file_path = "./app/graphql/mutations/base/#{singularized_class_name}/create_#{singularized_class_name}.rb"
9
+ return "Mutation already exist! #{file_path}" if File.exist?(file_path)
18
10
 
19
- TEXT
20
- end
21
- file_path
11
+ create_mutation_head(class_name: singularized_class_name)
12
+ relation_params = create_mutation_params(class_name: singularized_class_name)
13
+ create_mutation_after_params(class_name: singularized_class_name, relation_params: relation_params)
14
+ create_mutation_end(class_name: singularized_class_name)
15
+ update_mutation(class_name: singularized_class_name)
16
+ delete_mutation(class_name: singularized_class_name)
17
+ destroy_delete_mutation(class_name: singularized_class_name)
18
+ puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
19
+ file_path
20
+ rescue Thor::Error => e
21
+ raise(Thor::Error, e)
22
+ end
23
+
24
+ private
25
+
26
+ def create_mutation_head(class_name: "user")
27
+ singularized_class_name = class_name.singularize.underscore
28
+ dir_name = "./app/graphql/mutations/base/#{singularized_class_name}"
29
+ FileUtils.mkdir_p(dir_name) unless Dir.exist?(dir_name)
30
+ file_path = "./app/graphql/mutations/base/#{singularized_class_name}/create_#{singularized_class_name}.rb"
31
+ File.open(file_path, "w") do |new_line|
32
+ new_line.write(<<~TEXT)
33
+ module Mutations
34
+ module Base::#{singularized_class_name.camelize}
35
+ class Create#{singularized_class_name.camelize} < BaseMutation
36
+ field :#{singularized_class_name}_edge, Types::#{singularized_class_name.camelize}Type.edge_type, null: false
37
+ field :error, String, null: true
38
+
39
+ TEXT
22
40
  end
41
+ file_path
42
+ end
23
43
 
24
- def create_mutation_params(class_name: "user")
25
- file_path = "./app/graphql/mutations/base/#{class_name}/create_#{class_name}.rb"
26
- path = "./db/schema.rb"
27
- @on = false
28
- @user_exist = false
29
- @relation_params = []
30
- File.open(file_path, "a") do |new_line|
31
- File.open(path, "r") do |f|
32
- f.each_line.with_index do |line, _i|
33
- if @on
34
- if line.include?("t.index") || line.strip == "end"
35
- if @user_exist
36
- new_line.write(<<-TEXT)
44
+ def create_mutation_params(class_name: "user")
45
+ file_path = "./app/graphql/mutations/base/#{class_name}/create_#{class_name}.rb"
46
+ path = "./db/schema.rb"
47
+ @on = false
48
+ @user_exist = false
49
+ @relation_params = []
50
+ File.open(file_path, "a") do |new_line|
51
+ File.open(path, "r") do |f|
52
+ f.each_line.with_index do |line, _i|
53
+ if @on
54
+ if line.include?("t.index") || line.strip == "end"
55
+ if @user_exist
56
+ new_line.write(<<-TEXT)
37
57
 
38
58
  def resolve **args
39
59
  args[:user_id] = context[:user].id
40
- TEXT
41
- else
42
- new_line.write(<<-TEXT)
60
+ TEXT
61
+ else
62
+ new_line.write(<<-TEXT)
43
63
 
44
64
  def resolve **args
45
- TEXT
46
- end
47
- break
48
- end
49
- field = "[String]" if line.include?("array: true")
50
- type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
51
- field ||= Souls.type_check(type)
52
- case name
53
- when "user_id"
54
- @user_exist = true
55
- when /$*_id\z/
56
- @relation_params << name
57
- new_line.write(" argument :#{name}, String, required: false\n")
58
- when "created_at", "updated_at"
59
- next
60
- else
61
- new_line.write(" argument :#{name}, #{field}, required: false\n")
65
+ TEXT
62
66
  end
67
+ break
68
+ end
69
+ field = "[String]" if line.include?("array: true")
70
+ type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
71
+ field ||= Souls.type_check(type)
72
+ case name
73
+ when "user_id"
74
+ @user_exist = true
75
+ when /$*_id\z/
76
+ @relation_params << name
77
+ new_line.write(" argument :#{name}, String, required: false\n")
78
+ when "created_at", "updated_at"
79
+ next
80
+ else
81
+ new_line.write(" argument :#{name}, #{field}, required: false\n")
63
82
  end
64
- @on = true if Souls.table_check(line: line, class_name: class_name)
65
83
  end
84
+ @on = true if Souls.table_check(line: line, class_name: class_name)
66
85
  end
67
86
  end
68
- @relation_params
69
87
  end
88
+ @relation_params
89
+ end
70
90
 
71
- def create_mutation_after_params(class_name: "user", relation_params: [])
72
- return false if relation_params.empty?
91
+ def create_mutation_after_params(class_name: "user", relation_params: [])
92
+ return false if relation_params.empty?
73
93
 
74
- file_path = "./app/graphql/mutations/base/#{class_name}/create_#{class_name}.rb"
75
- relation_params.each do |params_name|
76
- File.open(file_path, "a") do |new_line|
77
- new_line.write(" _, args[:#{params_name}] = SoulsApiSchema.from_global_id(args[:#{params_name}])\n")
78
- end
94
+ file_path = "./app/graphql/mutations/base/#{class_name}/create_#{class_name}.rb"
95
+ relation_params.each do |params_name|
96
+ File.open(file_path, "a") do |new_line|
97
+ new_line.write(" _, args[:#{params_name}] = SoulsApiSchema.from_global_id(args[:#{params_name}])\n")
79
98
  end
80
- true
81
99
  end
100
+ true
101
+ end
82
102
 
83
- def create_mutation_end(class_name: "user")
84
- file_path = "./app/graphql/mutations/base/#{class_name}/create_#{class_name}.rb"
85
- File.open(file_path, "a") do |new_line|
86
- new_line.write(<<~TEXT)
87
- data = ::#{class_name.camelize}.new args
88
- raise(StandardError, data.errors.full_messages) unless data.save
103
+ def create_mutation_end(class_name: "user")
104
+ file_path = "./app/graphql/mutations/base/#{class_name}/create_#{class_name}.rb"
105
+ File.open(file_path, "a") do |new_line|
106
+ new_line.write(<<~TEXT)
107
+ data = ::#{class_name.camelize}.new args
108
+ raise(StandardError, data.errors.full_messages) unless data.save
89
109
 
90
- { #{class_name}_edge: { node: data } }
91
- rescue StandardError => error
92
- GraphQL::ExecutionError.new error
93
- end
110
+ { #{class_name}_edge: { node: data } }
111
+ rescue StandardError => error
112
+ GraphQL::ExecutionError.new error
94
113
  end
95
114
  end
96
115
  end
97
- TEXT
98
- end
99
- file_path
116
+ end
117
+ TEXT
100
118
  end
119
+ file_path
120
+ end
101
121
 
102
- ## 2.Mutation - Update
103
- def update_mutation_head(class_name: "user")
104
- file_path = "./app/graphql/mutations/base/#{class_name}/update_#{class_name}.rb"
105
- File.open(file_path, "w") do |new_line|
106
- new_line.write(<<~TEXT)
107
- module Mutations
108
- module Base::#{class_name.camelize}
109
- class Update#{class_name.camelize} < BaseMutation
110
- field :#{class_name}_edge, Types::#{class_name.camelize}Type.edge_type, null: false
122
+ ## 2.Mutation - Update
123
+ def update_mutation_head(class_name: "user")
124
+ file_path = "./app/graphql/mutations/base/#{class_name}/update_#{class_name}.rb"
125
+ File.open(file_path, "w") do |new_line|
126
+ new_line.write(<<~TEXT)
127
+ module Mutations
128
+ module Base::#{class_name.camelize}
129
+ class Update#{class_name.camelize} < BaseMutation
130
+ field :#{class_name}_edge, Types::#{class_name.camelize}Type.edge_type, null: false
111
131
 
112
- argument :id, String, required: true
113
- TEXT
114
- end
115
- file_path
132
+ argument :id, String, required: true
133
+ TEXT
116
134
  end
135
+ file_path
136
+ end
117
137
 
118
- def update_mutation_params(class_name: "user")
119
- file_path = "./app/graphql/mutations/base/#{class_name}/update_#{class_name}.rb"
120
- path = "./db/schema.rb"
121
- @on = false
122
- @user_exist = false
123
- @relation_params = []
124
- File.open(file_path, "a") do |new_line|
125
- File.open(path, "r") do |f|
126
- f.each_line.with_index do |line, _i|
127
- if @on
128
- if line.include?("t.index") || line.strip == "end"
129
- if @user_exist
130
- new_line.write(<<-TEXT)
138
+ def update_mutation_params(class_name: "user")
139
+ file_path = "./app/graphql/mutations/base/#{class_name}/update_#{class_name}.rb"
140
+ path = "./db/schema.rb"
141
+ @on = false
142
+ @user_exist = false
143
+ @relation_params = []
144
+ File.open(file_path, "a") do |new_line|
145
+ File.open(path, "r") do |f|
146
+ f.each_line.with_index do |line, _i|
147
+ if @on
148
+ if line.include?("t.index") || line.strip == "end"
149
+ if @user_exist
150
+ new_line.write(<<-TEXT)
131
151
 
132
152
  def resolve **args
133
153
  args[:user_id] = context[:user].id
134
154
  _, args[:id] = SoulsApiSchema.from_global_id(args[:id])
135
- TEXT
136
- else
137
- new_line.write(<<-TEXT)
155
+ TEXT
156
+ else
157
+ new_line.write(<<-TEXT)
138
158
 
139
159
  def resolve **args
140
160
  _, args[:id] = SoulsApiSchema.from_global_id(args[:id])
141
- TEXT
142
- end
143
- break
144
- end
145
- field = "[String]" if line.include?("array: true")
146
- type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
147
- field ||= Souls.type_check(type)
148
- case name
149
- when "user_id"
150
- @user_exist = true
151
- when /$*_id\z/
152
- @relation_params << name
153
- new_line.write(" argument :#{name}, String, required: false\n")
154
- when "created_at", "updated_at"
155
- next
156
- else
157
- new_line.write(" argument :#{name}, #{field}, required: false\n")
161
+ TEXT
158
162
  end
163
+ break
164
+ end
165
+ field = "[String]" if line.include?("array: true")
166
+ type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
167
+ field ||= Souls.type_check(type)
168
+ case name
169
+ when "user_id"
170
+ @user_exist = true
171
+ when /$*_id\z/
172
+ @relation_params << name
173
+ new_line.write(" argument :#{name}, String, required: false\n")
174
+ when "created_at", "updated_at"
175
+ next
176
+ else
177
+ new_line.write(" argument :#{name}, #{field}, required: false\n")
159
178
  end
160
- @on = true if Souls.table_check(line: line, class_name: class_name)
161
179
  end
180
+ @on = true if Souls.table_check(line: line, class_name: class_name)
162
181
  end
163
182
  end
164
- @relation_params
165
183
  end
184
+ @relation_params
185
+ end
166
186
 
167
- def update_mutation_after_params(class_name: "article", relation_params: [])
168
- return false if relation_params.empty?
187
+ def update_mutation_after_params(class_name: "article", relation_params: [])
188
+ return false if relation_params.empty?
169
189
 
170
- file_path = "./app/graphql/mutations/base/#{class_name}/update_#{class_name}.rb"
171
- relation_params.each do |params_name|
172
- File.open(file_path, "a") do |new_line|
173
- new_line.write(" _, args[:#{params_name}] = SoulsApiSchema.from_global_id(args[:#{params_name}])\n")
174
- end
190
+ file_path = "./app/graphql/mutations/base/#{class_name}/update_#{class_name}.rb"
191
+ relation_params.each do |params_name|
192
+ File.open(file_path, "a") do |new_line|
193
+ new_line.write(" _, args[:#{params_name}] = SoulsApiSchema.from_global_id(args[:#{params_name}])\n")
175
194
  end
176
- true
177
195
  end
196
+ true
197
+ end
178
198
 
179
- def update_mutation_end(class_name: "user")
180
- file_path = "./app/graphql/mutations/base/#{class_name}/update_#{class_name}.rb"
181
- File.open(file_path, "a") do |new_line|
182
- new_line.write(<<~TEXT)
183
- #{class_name} = ::#{class_name.camelize}.find args[:id]
184
- #{class_name}.update args
185
- { #{class_name}_edge: { node: ::#{class_name.camelize}.find(args[:id]) } }
186
- rescue StandardError => error
187
- GraphQL::ExecutionError.new error
188
- end
199
+ def update_mutation_end(class_name: "user")
200
+ file_path = "./app/graphql/mutations/base/#{class_name}/update_#{class_name}.rb"
201
+ File.open(file_path, "a") do |new_line|
202
+ new_line.write(<<~TEXT)
203
+ #{class_name} = ::#{class_name.camelize}.find args[:id]
204
+ #{class_name}.update args
205
+ { #{class_name}_edge: { node: ::#{class_name.camelize}.find(args[:id]) } }
206
+ rescue StandardError => error
207
+ GraphQL::ExecutionError.new error
189
208
  end
190
209
  end
191
210
  end
192
- TEXT
193
- end
194
- file_path
211
+ end
212
+ TEXT
195
213
  end
214
+ file_path
215
+ end
196
216
 
197
- def update_mutation(class_name: "user")
198
- file_path = "./app/graphql/mutations/base/#{class_name}/update_#{class_name}.rb"
199
- return "Mutation already exist! #{file_path}" if File.exist?(file_path)
217
+ def update_mutation(class_name: "user")
218
+ file_path = "./app/graphql/mutations/base/#{class_name}/update_#{class_name}.rb"
219
+ return "Mutation already exist! #{file_path}" if File.exist?(file_path)
200
220
 
201
- update_mutation_head(class_name: class_name)
202
- relation_params = update_mutation_params(class_name: class_name)
203
- update_mutation_after_params(class_name: class_name, relation_params: relation_params)
204
- update_mutation_end(class_name: class_name)
205
- end
221
+ update_mutation_head(class_name: class_name)
222
+ relation_params = update_mutation_params(class_name: class_name)
223
+ update_mutation_after_params(class_name: class_name, relation_params: relation_params)
224
+ update_mutation_end(class_name: class_name)
225
+ end
206
226
 
207
- # 3. Mutation - Delete
208
- def delete_mutation(class_name: "user")
209
- file_path = "./app/graphql/mutations/base/#{class_name}/delete_#{class_name}.rb"
210
- return "Mutation already exist! #{file_path}" if File.exist?(file_path)
227
+ # 3. Mutation - Delete
228
+ def delete_mutation(class_name: "user")
229
+ file_path = "./app/graphql/mutations/base/#{class_name}/delete_#{class_name}.rb"
230
+ return "Mutation already exist! #{file_path}" if File.exist?(file_path)
211
231
 
212
- File.open(file_path, "w") do |f|
213
- f.write(<<~TEXT)
214
- module Mutations
215
- module Base::#{class_name.camelize}
216
- class Delete#{class_name.camelize} < BaseMutation
217
- field :#{class_name}, Types::#{class_name.camelize}Type, null: false
218
- argument :id, String, required: true
232
+ File.open(file_path, "w") do |f|
233
+ f.write(<<~TEXT)
234
+ module Mutations
235
+ module Base::#{class_name.camelize}
236
+ class Delete#{class_name.camelize} < BaseMutation
237
+ field :#{class_name}, Types::#{class_name.camelize}Type, null: false
238
+ argument :id, String, required: true
219
239
 
220
- def resolve **args
221
- _, data_id = SoulsApiSchema.from_global_id args[:id]
222
- #{class_name} = ::#{class_name.camelize}.find data_id
223
- #{class_name}.update(is_deleted: true)
224
- { #{class_name}: ::#{class_name.camelize}.find(data_id) }
225
- rescue StandardError => error
226
- GraphQL::ExecutionError.new error
227
- end
240
+ def resolve **args
241
+ _, data_id = SoulsApiSchema.from_global_id args[:id]
242
+ #{class_name} = ::#{class_name.camelize}.find data_id
243
+ #{class_name}.update(is_deleted: true)
244
+ { #{class_name}: ::#{class_name.camelize}.find(data_id) }
245
+ rescue StandardError => error
246
+ GraphQL::ExecutionError.new error
228
247
  end
229
248
  end
230
249
  end
231
- TEXT
232
- end
233
- file_path
250
+ end
251
+ TEXT
234
252
  end
253
+ file_path
254
+ end
235
255
 
236
- # 4. Mutation - Destroy Delete
237
- def destroy_delete_mutation(class_name: "user")
238
- file_path = "./app/graphql/mutations/base/#{class_name}/destroy_delete_#{class_name}.rb"
239
- return "Mutation already exist! #{file_path}" if File.exist?(file_path)
256
+ # 4. Mutation - Destroy Delete
257
+ def destroy_delete_mutation(class_name: "user")
258
+ file_path = "./app/graphql/mutations/base/#{class_name}/destroy_delete_#{class_name}.rb"
259
+ return "Mutation already exist! #{file_path}" if File.exist?(file_path)
240
260
 
241
- File.open(file_path, "w") do |f|
242
- f.write(<<~TEXT)
243
- module Mutations
244
- module Base::#{class_name.camelize}
245
- class DestroyDelete#{class_name.camelize} < BaseMutation
246
- field :#{class_name}, Types::#{class_name.camelize}Type, null: false
247
- argument :id, String, required: true
261
+ File.open(file_path, "w") do |f|
262
+ f.write(<<~TEXT)
263
+ module Mutations
264
+ module Base::#{class_name.camelize}
265
+ class DestroyDelete#{class_name.camelize} < BaseMutation
266
+ field :#{class_name}, Types::#{class_name.camelize}Type, null: false
267
+ argument :id, String, required: true
248
268
 
249
- def resolve **args
250
- _, data_id = SoulsApiSchema.from_global_id args[:id]
251
- #{class_name} = ::#{class_name.camelize}.find data_id
252
- #{class_name}.destroy
253
- { #{class_name}: #{class_name} }
254
- rescue StandardError => error
255
- GraphQL::ExecutionError.new error
256
- end
269
+ def resolve **args
270
+ _, data_id = SoulsApiSchema.from_global_id args[:id]
271
+ #{class_name} = ::#{class_name.camelize}.find data_id
272
+ #{class_name}.destroy
273
+ { #{class_name}: #{class_name} }
274
+ rescue StandardError => error
275
+ GraphQL::ExecutionError.new error
257
276
  end
258
277
  end
259
278
  end
260
- TEXT
261
- end
262
- file_path
263
- rescue StandardError => e
264
- puts(e)
265
- end
266
-
267
- def mutation(class_name: "user")
268
- singularized_class_name = class_name.singularize
269
- file_dir = "./app/graphql/mutations/base"
270
- FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
271
- file_path = "./app/graphql/mutations/base/#{singularized_class_name}/create_#{singularized_class_name}.rb"
272
- return "Mutation already exist! #{file_path}" if File.exist?(file_path)
273
-
274
- create_mutation_head(class_name: singularized_class_name)
275
- relation_params = create_mutation_params(class_name: singularized_class_name)
276
- create_mutation_after_params(class_name: singularized_class_name, relation_params: relation_params)
277
- create_mutation_end(class_name: singularized_class_name)
278
- update_mutation(class_name: singularized_class_name)
279
- delete_mutation(class_name: singularized_class_name)
280
- destroy_delete_mutation(class_name: singularized_class_name)
281
- puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
282
- file_path
283
- rescue StandardError => e
284
- raise(StandardError, e)
279
+ end
280
+ TEXT
285
281
  end
282
+ file_path
283
+ rescue StandardError => e
284
+ puts(e)
286
285
  end
287
286
  end
288
287
  end