souls 0.15.4 → 0.15.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/exe/souls +4 -2
- data/lib/souls/generate.rb +197 -15
- data/lib/souls/init.rb +36 -18
- data/lib/souls/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e72a21841cb1bad148b2b4fb2c9b6fc01fe55bf3b369bfb3aaf71df1393bd34f
|
4
|
+
data.tar.gz: 1e60f71a7d2ad5734d7f8a6f18cca6b437148c7f4f9d08145fe5eddef81be639
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0fbaa59c380970e79452516a7b049dd8815c0f65bd35dad5cd9f263adb700fe5b44b2e2b7ccd298ecfaf4c9e6c80966f1d955f9346a0799d8a2b242dbb305889
|
7
|
+
data.tar.gz: 2d7ab88bd16ac812b1e751faf5f924e75e01dcb7be5b181867083bfb60d2611aadd92247c7be4d8fcfe99361055214d668107d45b61caf8a7216524c998ad20c
|
data/Gemfile.lock
CHANGED
data/exe/souls
CHANGED
@@ -25,7 +25,7 @@ begin
|
|
25
25
|
when "service"
|
26
26
|
system "bundle exec rake run_server"
|
27
27
|
else
|
28
|
-
|
28
|
+
`foreman start -f Procfile.dev`
|
29
29
|
end
|
30
30
|
when "c", "console"
|
31
31
|
strain = Souls.configuration.strain
|
@@ -33,7 +33,7 @@ begin
|
|
33
33
|
when "media", "admin"
|
34
34
|
system "yarn dev"
|
35
35
|
else
|
36
|
-
|
36
|
+
`bundle exec irb`
|
37
37
|
end
|
38
38
|
when "i", "infra"
|
39
39
|
Souls.send ARGV[1]
|
@@ -77,6 +77,8 @@ begin
|
|
77
77
|
Souls::Init.rspec_query class_name: ARGV[2]
|
78
78
|
when "rspec_type"
|
79
79
|
Souls::Init.rspec_type class_name: ARGV[2]
|
80
|
+
when "rspec_resolver"
|
81
|
+
Souls::Init.rspec_resolver class_name: ARGV[2]
|
80
82
|
else
|
81
83
|
"SOULs!"
|
82
84
|
end
|
data/lib/souls/generate.rb
CHANGED
@@ -18,6 +18,7 @@ module Souls
|
|
18
18
|
def resolver class_name: "souls"
|
19
19
|
FileUtils.mkdir_p "./app/graphql/resolvers" unless Dir.exist? "./app/graphql/resolvers"
|
20
20
|
file_path = "./app/graphql/resolvers/#{class_name.singularize}_search.rb"
|
21
|
+
return ["Aleady Exist!"] if File.exist? file_path
|
21
22
|
File.open(file_path, "w") do |f|
|
22
23
|
f.write <<~EOS
|
23
24
|
module Resolvers
|
@@ -30,6 +31,7 @@ module Souls
|
|
30
31
|
class #{class_name.camelize}Filter < ::Types::BaseInputObject
|
31
32
|
argument :OR, [self], required: false
|
32
33
|
|
34
|
+
argument :is_deleted, Boolean, required: false
|
33
35
|
argument :start_date, String, required: false
|
34
36
|
argument :end_date, String, required: false
|
35
37
|
end
|
@@ -57,8 +59,9 @@ module Souls
|
|
57
59
|
end
|
58
60
|
|
59
61
|
def normalize_filters(value, branches = [])
|
60
|
-
scope =
|
62
|
+
scope = ::#{class_name.camelize}.all
|
61
63
|
|
64
|
+
scope = scope.where(is_deleted: value[:is_deleted]) if value[:is_deleted]
|
62
65
|
scope = scope.where("created_at >= ?", value[:start_date]) if value[:start_date]
|
63
66
|
scope = scope.where("created_at <= ?", value[:end_date]) if value[:end_date]
|
64
67
|
|
@@ -75,24 +78,203 @@ module Souls
|
|
75
78
|
[file_path]
|
76
79
|
end
|
77
80
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
81
|
+
def job class_name: "send_mail"
|
82
|
+
file_path = "./app/jobs/#{class_name.singularize}_job.rb"
|
83
|
+
return ["Aleady Exist!"] if File.exist? file_path
|
84
|
+
File.open(file_path, "w") do |f|
|
85
|
+
f.write <<~EOS
|
86
|
+
class #{class_name.camelize}
|
87
|
+
include Sidekiq::Status::Worker
|
88
|
+
include Sidekiq::Worker
|
89
|
+
sidekiq_options queue: "default"
|
90
|
+
|
91
|
+
def perform **args
|
92
|
+
# write task code here
|
93
|
+
end
|
94
|
+
end
|
95
|
+
EOS
|
96
|
+
end
|
97
|
+
[file_path]
|
98
|
+
end
|
99
|
+
|
100
|
+
def rspec_resolver_head class_name: "souls"
|
101
|
+
file_path = "./spec/resolvers/#{class_name.singularize}_search_spec.rb"
|
102
|
+
File.open(file_path, "w") do |f|
|
103
|
+
f.write <<~EOS
|
104
|
+
RSpec.describe \"#{class_name.camelize}Search Resolver テスト\" do
|
105
|
+
describe "削除フラグ false の #{class_name.camelize} を返却する" do
|
106
|
+
EOS
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def rspec_resolver_after_head class_name: "souls"
|
111
|
+
file_path = "./spec/resolvers/#{class_name.singularize}_search_spec.rb"
|
112
|
+
path = "./db/schema.rb"
|
113
|
+
@on = false
|
114
|
+
@user_exist = false
|
115
|
+
@relation_params = []
|
116
|
+
File.open(file_path, "a") do |new_line|
|
117
|
+
File.open(path, "r") do |f|
|
118
|
+
f.each_line.with_index do |line, i|
|
119
|
+
if @on
|
120
|
+
if line.include?("end") || line.include?("t.index")
|
121
|
+
if @relation_params.empty?
|
122
|
+
new_line.write <<-EOS
|
123
|
+
let(:#{class_name}) { FactoryBot.create(:#{class_name}) }
|
124
|
+
|
125
|
+
let(:query) do
|
126
|
+
%(query {
|
127
|
+
#{class_name.singularize.camelize(:lower)}Search(filter: {
|
128
|
+
isDeleted: false
|
129
|
+
}) {
|
130
|
+
edges {
|
131
|
+
cursor
|
132
|
+
node {
|
133
|
+
id
|
134
|
+
EOS
|
135
|
+
else
|
136
|
+
new_line.write <<-EOS
|
137
|
+
let(:#{class_name}) { FactoryBot.create(:#{class_name}, #{@relation_params.join(", ")}) }
|
138
|
+
|
139
|
+
let(:query) do
|
140
|
+
%(query {
|
141
|
+
#{class_name.singularize.camelize(:lower)}Search(filter: {
|
142
|
+
isDeleted: false
|
143
|
+
}) {
|
144
|
+
edges {
|
145
|
+
cursor
|
146
|
+
node {
|
147
|
+
id
|
148
|
+
EOS
|
149
|
+
end
|
150
|
+
break
|
151
|
+
end
|
152
|
+
_, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
153
|
+
case name
|
154
|
+
when /$*_id\z/
|
155
|
+
relation_col = name.gsub("_id", "")
|
156
|
+
@relation_params << "#{name}: #{relation_col}.id"
|
157
|
+
new_line.write " let(:#{relation_col}) { FactoryBot.create(:#{relation_col}) }\n"
|
158
|
+
end
|
159
|
+
end
|
160
|
+
if table_check(line: line, class_name: class_name)
|
161
|
+
@on = true
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
def rspec_resolver_params class_name: "souls"
|
169
|
+
file_path = "./spec/resolvers/#{class_name.singularize}_search_spec.rb"
|
170
|
+
path = "./db/schema.rb"
|
171
|
+
@on = false
|
172
|
+
File.open(file_path, "a") do |new_line|
|
173
|
+
File.open(path, "r") do |f|
|
174
|
+
f.each_line.with_index do |line, i|
|
175
|
+
if @on
|
176
|
+
if line.include?("end") || line.include?("t.index")
|
177
|
+
new_line.write <<-EOS
|
178
|
+
}
|
179
|
+
}
|
180
|
+
nodes {
|
181
|
+
id
|
182
|
+
}
|
183
|
+
pageInfo {
|
184
|
+
endCursor
|
185
|
+
hasNextPage
|
186
|
+
startCursor
|
187
|
+
hasPreviousPage
|
188
|
+
}
|
189
|
+
}
|
190
|
+
}
|
191
|
+
)
|
192
|
+
end
|
193
|
+
|
194
|
+
subject(:result) do
|
195
|
+
SoulsApiSchema.execute(query).as_json
|
196
|
+
end
|
197
|
+
|
198
|
+
it "return #{class_name.camelize} Data" do
|
199
|
+
a1 = result.dig("data", "#{class_name.singularize.camelize(:lower)}Search", "edges")[0]["node"]
|
200
|
+
p result if a1.nil?
|
201
|
+
expect(a1).to include(
|
202
|
+
"id" => be_a(String),
|
203
|
+
EOS
|
204
|
+
break
|
205
|
+
end
|
206
|
+
_, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
207
|
+
case name
|
208
|
+
when "user_id", "created_at", "updated_at", /$*_id\z/
|
209
|
+
next
|
210
|
+
else
|
211
|
+
new_line.write " #{name.camelize(:lower)}\n"
|
212
|
+
end
|
213
|
+
end
|
214
|
+
if table_check(line: line, class_name: class_name)
|
215
|
+
@on = true
|
216
|
+
end
|
89
217
|
end
|
90
218
|
end
|
91
|
-
|
219
|
+
end
|
92
220
|
end
|
93
|
-
|
221
|
+
|
222
|
+
def rspec_resolver_end class_name: "souls"
|
223
|
+
file_path = "./spec/resolvers/#{class_name.singularize}_search_spec.rb"
|
224
|
+
path = "./db/schema.rb"
|
225
|
+
@on = false
|
226
|
+
File.open(file_path, "a") do |new_line|
|
227
|
+
File.open(path, "r") do |f|
|
228
|
+
f.each_line.with_index do |line, i|
|
229
|
+
if @on
|
230
|
+
if line.include?("end") || line.include?("t.index")
|
231
|
+
new_line.write <<-EOS
|
232
|
+
)
|
94
233
|
end
|
234
|
+
end
|
235
|
+
end
|
236
|
+
EOS
|
237
|
+
break
|
238
|
+
end
|
239
|
+
type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
240
|
+
field ||= type_check type
|
241
|
+
array_true = line.include?("array: true")
|
242
|
+
case name
|
243
|
+
when "user_id", "created_at", "updated_at", /$*_id\z/
|
244
|
+
next
|
245
|
+
else
|
246
|
+
case type
|
247
|
+
when "text", "date", "datetime"
|
248
|
+
if array_true
|
249
|
+
new_line.write " \"#{name.camelize(:lower)}\" => be_all(String),\n"
|
250
|
+
else
|
251
|
+
new_line.write " \"#{name.camelize(:lower)}\" => be_a(String),\n"
|
252
|
+
end
|
253
|
+
when "boolean"
|
254
|
+
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_in([true, false]),\n"
|
255
|
+
when "string", "bigint", "integer", "float"
|
256
|
+
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_a(#{field}),\n"
|
257
|
+
end
|
258
|
+
end
|
259
|
+
end
|
260
|
+
if table_check(line: line, class_name: class_name)
|
261
|
+
@on = true
|
262
|
+
end
|
263
|
+
end
|
264
|
+
end
|
265
|
+
end
|
266
|
+
[file_path]
|
267
|
+
end
|
95
268
|
|
269
|
+
def rspec_resolver class_name: "souls"
|
270
|
+
singularized_class_name = class_name.singularize
|
271
|
+
file_path = "#{Dir.pwd}/spec/resolvers/#{singularized_class_name}_search_spec.rb"
|
272
|
+
return ["Aleady Exist!"] if File.exist? file_path
|
273
|
+
rspec_resolver_head class_name: singularized_class_name
|
274
|
+
rspec_resolver_after_head class_name: singularized_class_name
|
275
|
+
rspec_resolver_params class_name: singularized_class_name
|
276
|
+
rspec_resolver_end class_name: singularized_class_name
|
277
|
+
end
|
96
278
|
end
|
97
279
|
end
|
98
|
-
end
|
280
|
+
end
|
data/lib/souls/init.rb
CHANGED
@@ -114,11 +114,11 @@ module Souls
|
|
114
114
|
system "cp -r #{repository_name}-#{folder}/ #{app_name}/"
|
115
115
|
system "rm -rf #{version}.tar.gz && rm -rf #{repository_name}-#{folder}"
|
116
116
|
txt = <<~TEXT
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
117
|
+
_____ ____ __ ____#{' '}
|
118
|
+
/ ___// __ \\/ / / / / _____
|
119
|
+
\\__ \\/ / / / / / / / / ___/
|
120
|
+
___/ / /_/ / /_/ / /___(__ )#{' '}
|
121
|
+
/____/\\____/\\____/_____/____/#{' '}
|
122
122
|
TEXT
|
123
123
|
puts txt
|
124
124
|
puts "=============================="
|
@@ -724,7 +724,7 @@ module Souls
|
|
724
724
|
end
|
725
725
|
|
726
726
|
def rspec_factory class_name: "souls"
|
727
|
-
return ["Aleady Exist!"]
|
727
|
+
return ["Aleady Exist!"] if File.exist? "./spec/factories/#{class_name.singularize}"
|
728
728
|
singularized_class_name = class_name.singularize
|
729
729
|
rspec_factory_head class_name: singularized_class_name
|
730
730
|
rspec_factory_params class_name: singularized_class_name
|
@@ -733,7 +733,7 @@ module Souls
|
|
733
733
|
|
734
734
|
def rspec_model class_name: "souls"
|
735
735
|
file_path = "./spec/models/#{class_name}_spec.rb"
|
736
|
-
return ["Aleady Exist!"]
|
736
|
+
return ["Aleady Exist!"] if File.exist? file_path
|
737
737
|
File.open(file_path, "w") do |f|
|
738
738
|
f.write <<~EOS
|
739
739
|
RSpec.describe "#{class_name.camelize} Model テスト", type: :model do
|
@@ -934,13 +934,13 @@ module Souls
|
|
934
934
|
File.open(file_path, "a") do |new_line|
|
935
935
|
File.open(path, "r") do |f|
|
936
936
|
f.each_line.with_index do |line, i|
|
937
|
-
if @on
|
937
|
+
if @on
|
938
938
|
if line.include?("end") || line.include?("t.index")
|
939
939
|
new_line.write <<~EOS
|
940
|
-
|
941
|
-
end
|
942
|
-
end
|
940
|
+
)
|
943
941
|
end
|
942
|
+
end
|
943
|
+
end
|
944
944
|
EOS
|
945
945
|
break
|
946
946
|
end
|
@@ -1051,7 +1051,7 @@ module Souls
|
|
1051
1051
|
File.open(file_path, "a") do |new_line|
|
1052
1052
|
File.open(path, "r") do |f|
|
1053
1053
|
f.each_line.with_index do |line, i|
|
1054
|
-
if @on
|
1054
|
+
if @on
|
1055
1055
|
if line.include?("end") || line.include?("t.index")
|
1056
1056
|
new_line.write <<-EOS
|
1057
1057
|
}
|
@@ -1093,13 +1093,13 @@ module Souls
|
|
1093
1093
|
File.open(file_path, "a") do |new_line|
|
1094
1094
|
File.open(path, "r") do |f|
|
1095
1095
|
f.each_line.with_index do |line, i|
|
1096
|
-
if @on
|
1096
|
+
if @on
|
1097
1097
|
if line.include?("end") || line.include?("t.index")
|
1098
|
-
new_line.write
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
end
|
1098
|
+
new_line.write <<~EOS
|
1099
|
+
)
|
1100
|
+
end
|
1101
|
+
end
|
1102
|
+
end
|
1103
1103
|
EOS
|
1104
1104
|
break
|
1105
1105
|
end
|
@@ -1174,20 +1174,24 @@ end
|
|
1174
1174
|
model_paths = model class_name: singularized_class_name
|
1175
1175
|
type_paths = type class_name: singularized_class_name
|
1176
1176
|
node_type_paths = node_type class_name: singularized_class_name
|
1177
|
+
resolver_paths = resolver class_name: singularized_class_name
|
1177
1178
|
rspec_factory_paths = rspec_factory class_name: singularized_class_name
|
1178
1179
|
rspec_model_paths = rspec_model class_name: singularized_class_name
|
1179
1180
|
rspec_mutation_paths = rspec_mutation class_name: singularized_class_name
|
1180
1181
|
rspec_query_paths = rspec_query class_name: singularized_class_name
|
1182
|
+
rspec_resolver_paths = rspec_resolver class_name: singularized_class_name
|
1181
1183
|
query_path = query class_name: singularized_class_name
|
1182
1184
|
mutation_path = mutation class_name: singularized_class_name
|
1183
1185
|
[
|
1184
1186
|
model: model_paths,
|
1185
1187
|
type: type_paths,
|
1188
|
+
resolver: resolver_paths,
|
1186
1189
|
node_type: node_type_paths,
|
1187
1190
|
rspec_factory: rspec_factory_paths,
|
1188
1191
|
rspec_model: rspec_model_paths,
|
1189
1192
|
rspec_mutation: rspec_mutation_paths,
|
1190
1193
|
rspec_query: rspec_query_paths,
|
1194
|
+
rspec_resolver: rspec_resolver_paths,
|
1191
1195
|
query: query_path,
|
1192
1196
|
mutation: mutation_path,
|
1193
1197
|
add_query_type: [
|
@@ -1208,11 +1212,13 @@ end
|
|
1208
1212
|
result = migrate class_name: class_name
|
1209
1213
|
puts result[0][:model]
|
1210
1214
|
puts result[0][:type]
|
1215
|
+
puts result[0][:resolver]
|
1211
1216
|
puts result[0][:node_type]
|
1212
1217
|
puts result[0][:rspec_factory]
|
1213
1218
|
puts result[0][:rspec_model]
|
1214
1219
|
puts result[0][:rspec_mutation]
|
1215
1220
|
puts result[0][:rspec_query]
|
1221
|
+
puts result[0][:rspec_resolver]
|
1216
1222
|
puts result[0][:query]
|
1217
1223
|
puts result[0][:mutation]
|
1218
1224
|
|
@@ -1258,6 +1264,12 @@ end
|
|
1258
1264
|
path[:type].each { |line| puts line }
|
1259
1265
|
end
|
1260
1266
|
end
|
1267
|
+
puts "\n============== Resolver =======================\n\n"
|
1268
|
+
paths.each do |class_name|
|
1269
|
+
class_name.each do |path|
|
1270
|
+
path[:resovler].each { |line| puts line }
|
1271
|
+
end
|
1272
|
+
end
|
1261
1273
|
puts "\n============== NodeType =======================\n\n"
|
1262
1274
|
paths.each do |class_name|
|
1263
1275
|
class_name.each do |path|
|
@@ -1288,6 +1300,12 @@ end
|
|
1288
1300
|
path[:rspec_query].each { |line| puts line }
|
1289
1301
|
end
|
1290
1302
|
end
|
1303
|
+
puts "\n============== RspecResolver =================\n\n"
|
1304
|
+
paths.each do |class_name|
|
1305
|
+
class_name.each do |path|
|
1306
|
+
path[:rspec_resolver].each { |line| puts line }
|
1307
|
+
end
|
1308
|
+
end
|
1291
1309
|
puts "\n============== Query ======================\n\n"
|
1292
1310
|
paths.each do |class_name|
|
1293
1311
|
class_name.each do |path|
|
data/lib/souls/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: souls
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.15.
|
4
|
+
version: 0.15.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- POPPIN-FUMI
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-02-
|
13
|
+
date: 2021-02-15 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description: SOULS is a Web Application Framework for Microservices on Multi Cloud
|
16
16
|
Platform such as Google Cloud Platform, Amazon Web Services, and Alibaba Cloud.
|
@@ -70,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
70
70
|
- !ruby/object:Gem::Version
|
71
71
|
version: '0'
|
72
72
|
requirements: []
|
73
|
-
rubygems_version: 3.2.
|
73
|
+
rubygems_version: 3.2.4
|
74
74
|
signing_key:
|
75
75
|
specification_version: 4
|
76
76
|
summary: SOULS is a GraphQL Based Web Application Framework for Microservices on Multi
|