souls 0.50.0 → 0.52.0

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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -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 +100 -95
  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 -93
  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 -45
  40. data/lib/souls/cli/index.rb +3 -20
  41. data/lib/souls/cli/init/index.rb +140 -138
  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