souls 0.13.2 → 0.13.8
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/Gemfile.lock +8 -8
- data/exe/souls +9 -7
- data/lib/souls/init.rb +367 -191
- data/lib/souls/version.rb +1 -1
- data/souls.gemspec +2 -2
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f017a0b2dc2d05a5e78b857b3e437a931d976c0ab0b6c83625ee62f7109092b1
|
4
|
+
data.tar.gz: 23bfc89940d3018c6626d38f4cef322829f224acd541100e92f696a3040155c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c228b2dcf307527d6732a37e1b6f8694de43a1641e092a2cee49d1cf3a19595bd52581bb2842e0703e4316ca62335856e4e73960487a2be57dda3d632dd4c424
|
7
|
+
data.tar.gz: 70b3e91e48d84161cf97210a8adc360c7266fafef31729a4e18eee2adad7470c0cfaa3c37e40ebca7dc9acac178208dac734d002e87fe93c52d0d6c57a8531b8
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
souls (0.13.
|
4
|
+
souls (0.13.7)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -12,20 +12,20 @@ GEM
|
|
12
12
|
minitest (>= 5.1)
|
13
13
|
tzinfo (~> 2.0)
|
14
14
|
zeitwerk (~> 2.3)
|
15
|
-
ast (2.4.
|
15
|
+
ast (2.4.2)
|
16
16
|
ast_utils (0.3.0)
|
17
17
|
parser (~> 2.4)
|
18
18
|
thor (>= 0.19)
|
19
|
-
concurrent-ruby (1.1.
|
19
|
+
concurrent-ruby (1.1.8)
|
20
20
|
diff-lcs (1.4.4)
|
21
21
|
ffi (1.14.2)
|
22
22
|
i18n (1.8.7)
|
23
23
|
concurrent-ruby (~> 1.0)
|
24
24
|
language_server-protocol (3.15.0.1)
|
25
|
-
listen (3.4.
|
25
|
+
listen (3.4.1)
|
26
26
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
27
27
|
rb-inotify (~> 0.9, >= 0.9.10)
|
28
|
-
minitest (5.14.
|
28
|
+
minitest (5.14.3)
|
29
29
|
parallel (1.20.1)
|
30
30
|
parser (2.7.2.0)
|
31
31
|
ast (~> 2.4.1)
|
@@ -34,7 +34,7 @@ GEM
|
|
34
34
|
rb-fsevent (0.10.4)
|
35
35
|
rb-inotify (0.10.1)
|
36
36
|
ffi (~> 1.0)
|
37
|
-
rbs (1.0.
|
37
|
+
rbs (1.0.4)
|
38
38
|
regexp_parser (2.0.3)
|
39
39
|
rexml (3.2.4)
|
40
40
|
rspec (3.1.0)
|
@@ -58,7 +58,7 @@ GEM
|
|
58
58
|
rubocop-ast (>= 1.2.0, < 2.0)
|
59
59
|
ruby-progressbar (~> 1.7)
|
60
60
|
unicode-display_width (>= 1.4.0, < 2.0)
|
61
|
-
rubocop-ast (1.4.
|
61
|
+
rubocop-ast (1.4.1)
|
62
62
|
parser (>= 2.7.1.5)
|
63
63
|
ruby-progressbar (1.11.0)
|
64
64
|
steep (0.39.0)
|
@@ -69,7 +69,7 @@ GEM
|
|
69
69
|
parser (~> 2.7.0)
|
70
70
|
rainbow (>= 2.2.2, < 4.0)
|
71
71
|
rbs (~> 1.0.0)
|
72
|
-
thor (1.0
|
72
|
+
thor (1.1.0)
|
73
73
|
tzinfo (2.0.4)
|
74
74
|
concurrent-ruby (~> 1.0)
|
75
75
|
unicode-display_width (1.7.0)
|
data/exe/souls
CHANGED
@@ -13,27 +13,27 @@ begin
|
|
13
13
|
puts "you need to specify your app name \n `souls new app_name`"
|
14
14
|
exit
|
15
15
|
end
|
16
|
-
puts "Which framework: \n 1. SOULS
|
16
|
+
puts "Which framework: \n 1. SOULS GraphQL API \n 2. SOULS GraphQL API gRPC compatible \n 3. SOULS gRPC Service \n 4. SOULS Media Web \n 5. SOULS Admin Web \n Enter Number: "
|
17
17
|
strain = STDIN.gets.chomp.to_i
|
18
18
|
(1..5).include?(strain) ? puts("Generating Souls.. \n") : raise(StandardError, "Choose Number 1..5")
|
19
19
|
Souls::Init.create_souls strain: strain, app_name: ARGV[1]
|
20
20
|
when "s", "server"
|
21
21
|
strain = Souls.configuration.strain
|
22
22
|
case strain
|
23
|
-
when "
|
24
|
-
system "
|
23
|
+
when "media", "admin"
|
24
|
+
system "yarn dev"
|
25
25
|
when "service"
|
26
26
|
system "bundle exec rake run_server"
|
27
27
|
else
|
28
|
-
system "
|
28
|
+
system "bundle exec puma -p 3000"
|
29
29
|
end
|
30
30
|
when "c", "console"
|
31
31
|
strain = Souls.configuration.strain
|
32
32
|
case strain
|
33
|
-
when "
|
34
|
-
system "bundle exec irb"
|
35
|
-
else
|
33
|
+
when "media", "admin"
|
36
34
|
system "yarn dev"
|
35
|
+
else
|
36
|
+
system "bundle exec irb"
|
37
37
|
end
|
38
38
|
when "i", "infra"
|
39
39
|
Souls.send ARGV[1]
|
@@ -45,6 +45,8 @@ begin
|
|
45
45
|
puts Souls::VERSION
|
46
46
|
when "g", "generate"
|
47
47
|
case ARGV[1]
|
48
|
+
when "test_dir"
|
49
|
+
Souls::Init.test_dir
|
48
50
|
when "test"
|
49
51
|
Souls::Init.single_migrate class_name: "user"
|
50
52
|
when "model"
|
data/lib/souls/init.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Souls
|
2
|
-
STRAINS = ["
|
2
|
+
STRAINS = ["graph", "api", "service", "media", "admin"]
|
3
3
|
module Init
|
4
4
|
class << self
|
5
5
|
def create_souls strain: 1, app_name: "souls"
|
@@ -253,6 +253,19 @@ module Souls
|
|
253
253
|
[file_path]
|
254
254
|
end
|
255
255
|
|
256
|
+
def test_dir
|
257
|
+
FileUtils.mkdir_p "./app/graphql/mutations"
|
258
|
+
FileUtils.mkdir_p "./app/graphql/queries"
|
259
|
+
FileUtils.mkdir_p "./app/graphql/types"
|
260
|
+
FileUtils.mkdir_p "./spec/factories"
|
261
|
+
FileUtils.mkdir_p "./spec/queries"
|
262
|
+
FileUtils.mkdir_p "./spec/mutations"
|
263
|
+
FileUtils.mkdir_p "./spec/models"
|
264
|
+
FileUtils.mkdir_p "./db/"
|
265
|
+
FileUtils.touch "./db/schema.rb"
|
266
|
+
puts "test dir created!"
|
267
|
+
end
|
268
|
+
|
256
269
|
def type_check type
|
257
270
|
{
|
258
271
|
bigint: "Integer",
|
@@ -272,8 +285,8 @@ module Souls
|
|
272
285
|
float: 4.2,
|
273
286
|
string: '"MyString"',
|
274
287
|
text: '"MyString"',
|
275
|
-
datetime: "
|
276
|
-
date: "
|
288
|
+
datetime: "DateTime.now",
|
289
|
+
date: "DateTime.now",
|
277
290
|
boolean: false,
|
278
291
|
integer: 1
|
279
292
|
}[type.to_sym]
|
@@ -304,15 +317,36 @@ module Souls
|
|
304
317
|
file_path = "./app/graphql/mutations/#{class_name}/create_#{class_name}.rb"
|
305
318
|
path = "./db/schema.rb"
|
306
319
|
@on = false
|
320
|
+
@user_exist = false
|
321
|
+
@relation_params = []
|
307
322
|
File.open(file_path, "a") do |new_line|
|
308
323
|
File.open(path, "r") do |f|
|
309
324
|
f.each_line.with_index do |line, i|
|
310
325
|
if @on
|
311
|
-
|
326
|
+
if line.include?("end") || line.include?("t.index")
|
327
|
+
if @user_exist
|
328
|
+
new_line.write <<-EOS
|
329
|
+
|
330
|
+
def resolve **args
|
331
|
+
args[:user_id] = context[:user].id
|
332
|
+
EOS
|
333
|
+
else
|
334
|
+
new_line.write <<-EOS
|
335
|
+
|
336
|
+
def resolve **args
|
337
|
+
EOS
|
338
|
+
end
|
339
|
+
break
|
340
|
+
end
|
312
341
|
field = "[String]" if line.include?("array: true")
|
313
342
|
type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
314
343
|
field ||= type_check type
|
315
344
|
case name
|
345
|
+
when "user_id"
|
346
|
+
@user_exist = true
|
347
|
+
when /$*_id\z/
|
348
|
+
@relation_params << name
|
349
|
+
new_line.write " argument :#{name}, String, required: false\n"
|
316
350
|
when "created_at", "updated_at"
|
317
351
|
next
|
318
352
|
else
|
@@ -323,14 +357,24 @@ module Souls
|
|
323
357
|
end
|
324
358
|
end
|
325
359
|
end
|
360
|
+
@relation_params
|
361
|
+
end
|
362
|
+
|
363
|
+
def create_mutation_after_params class_name: "article", relation_params: []
|
364
|
+
return false if relation_params.empty?
|
365
|
+
file_path = "./app/graphql/mutations/#{class_name}/create_#{class_name}.rb"
|
366
|
+
relation_params.each do |params_name|
|
367
|
+
File.open(file_path, "a") do |new_line|
|
368
|
+
new_line.write " _, args[:#{params_name}] = SoulsApiSchema.from_global_id(args[:#{params_name}])\n"
|
369
|
+
end
|
370
|
+
end
|
371
|
+
true
|
326
372
|
end
|
327
373
|
|
328
374
|
def create_mutation_end class_name: "souls"
|
329
375
|
file_path = "./app/graphql/mutations/#{class_name}/create_#{class_name}.rb"
|
330
376
|
File.open(file_path, "a") do |new_line|
|
331
377
|
new_line.write <<~EOS
|
332
|
-
|
333
|
-
def resolve **args
|
334
378
|
#{class_name} = ::#{class_name.camelize}.new args
|
335
379
|
if #{class_name}.save
|
336
380
|
{ #{class_name}: #{class_name} }
|
@@ -357,6 +401,7 @@ module Souls
|
|
357
401
|
class Update#{class_name.camelize} < BaseMutation
|
358
402
|
field :#{class_name}, Types::#{class_name.camelize}Type, null: false
|
359
403
|
|
404
|
+
argument :id, String, required: true
|
360
405
|
EOS
|
361
406
|
end
|
362
407
|
end
|
@@ -365,15 +410,38 @@ module Souls
|
|
365
410
|
file_path = "./app/graphql/mutations/#{class_name}/update_#{class_name}.rb"
|
366
411
|
path = "./db/schema.rb"
|
367
412
|
@on = false
|
413
|
+
@user_exist = false
|
414
|
+
@relation_params = []
|
368
415
|
File.open(file_path, "a") do |new_line|
|
369
416
|
File.open(path, "r") do |f|
|
370
417
|
f.each_line.with_index do |line, i|
|
371
418
|
if @on
|
372
|
-
|
419
|
+
if line.include?("end") || line.include?("t.index")
|
420
|
+
if @user_exist
|
421
|
+
new_line.write <<-EOS
|
422
|
+
|
423
|
+
def resolve **args
|
424
|
+
args[:user_id] = context[:user].id
|
425
|
+
_, args[:id] = SoulsApiSchema.from_global_id(args[:id])
|
426
|
+
EOS
|
427
|
+
else
|
428
|
+
new_line.write <<-EOS
|
429
|
+
|
430
|
+
def resolve **args
|
431
|
+
_, args[:id] = SoulsApiSchema.from_global_id(args[:id])
|
432
|
+
EOS
|
433
|
+
end
|
434
|
+
break
|
435
|
+
end
|
373
436
|
field = "[String]" if line.include?("array: true")
|
374
437
|
type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
375
438
|
field ||= type_check type
|
376
439
|
case name
|
440
|
+
when "user_id"
|
441
|
+
@user_exist = true
|
442
|
+
when /$*_id\z/
|
443
|
+
@relation_params << name
|
444
|
+
new_line.write " argument :#{name}, String, required: false\n"
|
377
445
|
when "created_at", "updated_at"
|
378
446
|
next
|
379
447
|
else
|
@@ -384,14 +452,24 @@ module Souls
|
|
384
452
|
end
|
385
453
|
end
|
386
454
|
end
|
455
|
+
@relation_params
|
456
|
+
end
|
457
|
+
|
458
|
+
def update_mutation_after_params class_name: "article", relation_params: []
|
459
|
+
return false if relation_params.empty?
|
460
|
+
file_path = "./app/graphql/mutations/#{class_name}/update_#{class_name}.rb"
|
461
|
+
relation_params.each do |params_name|
|
462
|
+
File.open(file_path, "a") do |new_line|
|
463
|
+
new_line.write " _, args[:#{params_name}] = SoulsApiSchema.from_global_id(args[:#{params_name}])\n"
|
464
|
+
end
|
465
|
+
end
|
466
|
+
true
|
387
467
|
end
|
388
468
|
|
389
469
|
def update_mutation_end class_name: "souls"
|
390
470
|
file_path = "./app/graphql/mutations/#{class_name}/update_#{class_name}.rb"
|
391
471
|
File.open(file_path, "a") do |new_line|
|
392
472
|
new_line.write <<~EOS
|
393
|
-
|
394
|
-
def resolve **args
|
395
473
|
#{class_name} = ::#{class_name.camelize}.find args[:id]
|
396
474
|
#{class_name}.update args
|
397
475
|
{ #{class_name}: ::#{class_name.camelize}.find(args[:id]) }
|
@@ -408,7 +486,8 @@ module Souls
|
|
408
486
|
|
409
487
|
def update_mutation class_name: "souls"
|
410
488
|
update_mutation_head class_name: class_name
|
411
|
-
update_mutation_params class_name: class_name
|
489
|
+
relation_params = update_mutation_params class_name: class_name
|
490
|
+
update_mutation_after_params class_name: class_name, relation_params: relation_params
|
412
491
|
update_mutation_end class_name: class_name
|
413
492
|
end
|
414
493
|
|
@@ -420,10 +499,11 @@ module Souls
|
|
420
499
|
module #{class_name.camelize}
|
421
500
|
class Delete#{class_name.camelize} < BaseMutation
|
422
501
|
field :#{class_name}, Types::#{class_name.camelize}Type, null: false
|
423
|
-
argument :id,
|
502
|
+
argument :id, String, required: true
|
424
503
|
|
425
|
-
def resolve
|
426
|
-
|
504
|
+
def resolve **args
|
505
|
+
_, data_id = SoulsApiSchema.from_global_id args[:id]
|
506
|
+
#{class_name} = ::#{class_name.camelize}.find data_id
|
427
507
|
#{class_name}.destroy
|
428
508
|
{ #{class_name}: #{class_name} }
|
429
509
|
rescue StandardError => error
|
@@ -452,7 +532,8 @@ module Souls
|
|
452
532
|
Dir.mkdir "./app/graphql/mutations/#{singularized_class_name}"
|
453
533
|
end
|
454
534
|
create_mutation_head class_name: singularized_class_name
|
455
|
-
create_mutation_params class_name: singularized_class_name
|
535
|
+
relation_params = create_mutation_params class_name: singularized_class_name
|
536
|
+
create_mutation_after_params class_name: singularized_class_name, relation_params: relation_params
|
456
537
|
[
|
457
538
|
create_mutation_end(class_name: singularized_class_name),
|
458
539
|
update_mutation(class_name: singularized_class_name),
|
@@ -490,8 +571,8 @@ module Souls
|
|
490
571
|
argument :id, String, required: true
|
491
572
|
|
492
573
|
def resolve **args
|
493
|
-
_,
|
494
|
-
::#{class_name.camelize}.find(
|
574
|
+
_, data_id = SoulsApiSchema.from_global_id args[:id]
|
575
|
+
::#{class_name.camelize}.find(data_id)
|
495
576
|
rescue StandardError => error
|
496
577
|
GraphQL::ExecutionError.new error
|
497
578
|
end
|
@@ -531,7 +612,12 @@ module Souls
|
|
531
612
|
field = "[String]" if line.include?("array: true")
|
532
613
|
type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
533
614
|
field ||= type_check type
|
534
|
-
|
615
|
+
case name
|
616
|
+
when /$*_id\z/
|
617
|
+
new_line.write " field :#{name.gsub("_id", "")}, Types::#{name.gsub("_id", "").singularize.camelize}Type, null: false\n"
|
618
|
+
else
|
619
|
+
new_line.write " field :#{name}, #{field}, null: true\n"
|
620
|
+
end
|
535
621
|
end
|
536
622
|
if table_check(line: line, class_name: class_name)
|
537
623
|
@on = true
|
@@ -637,64 +723,120 @@ module Souls
|
|
637
723
|
f.write <<~EOS
|
638
724
|
RSpec.describe \"#{class_name.camelize} Mutation テスト\" do
|
639
725
|
describe "#{class_name.camelize} データを登録する" do
|
640
|
-
|
641
|
-
|
642
|
-
let(:mutation) do
|
643
|
-
%(mutation {
|
644
|
-
create#{class_name.camelize}(input: {
|
726
|
+
get_global_key = proc {|class_name, id| Base64.encode64(\"\#{class_name}:\#{id}\")}
|
645
727
|
EOS
|
646
728
|
end
|
647
729
|
end
|
648
730
|
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
731
|
+
def rspec_mutation_after_head class_name: "souls"
|
732
|
+
file_path = "./spec/mutations/#{class_name.singularize}_spec.rb"
|
733
|
+
path = "./db/schema.rb"
|
734
|
+
@on = false
|
735
|
+
@user_exist = false
|
736
|
+
@relation_params = []
|
737
|
+
File.open(file_path, "a") do |new_line|
|
738
|
+
File.open(path, "r") do |f|
|
739
|
+
f.each_line.with_index do |line, i|
|
740
|
+
if @on
|
741
|
+
if line.include?("end") || line.include?("t.index")
|
742
|
+
new_line.write <<-EOS
|
743
|
+
let(:#{class_name}) { FactoryBot.attributes_for(:#{class_name}, #{@relation_params.join(", ")}) }
|
744
|
+
|
745
|
+
let(:mutation) do
|
746
|
+
%(mutation {
|
747
|
+
create#{class_name.camelize}(input: {
|
748
|
+
EOS
|
749
|
+
break
|
750
|
+
end
|
751
|
+
_, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
752
|
+
case name
|
753
|
+
when /$*_id\z/
|
754
|
+
relation_col = name.gsub("_id", "")
|
755
|
+
@relation_params << "#{name}: get_global_key.call(\"#{name.singularize.camelize.gsub("Id", "")}\", #{relation_col}.id)"
|
756
|
+
new_line.write " let(:#{relation_col}) { FactoryBot.create(:#{relation_col}) }\n"
|
757
|
+
end
|
758
|
+
end
|
759
|
+
if table_check(line: line, class_name: class_name)
|
760
|
+
@on = true
|
761
|
+
end
|
762
|
+
end
|
763
|
+
end
|
764
|
+
end
|
765
|
+
end
|
766
|
+
|
767
|
+
def rspec_mutation_params class_name: "souls"
|
768
|
+
file_path = "./spec/mutations/#{class_name.singularize}_spec.rb"
|
769
|
+
path = "./db/schema.rb"
|
770
|
+
@on = false
|
771
|
+
@user_exist = false
|
772
|
+
File.open(file_path, "a") do |new_line|
|
773
|
+
File.open(path, "r") do |f|
|
774
|
+
f.each_line.with_index do |line, i|
|
775
|
+
if @on
|
776
|
+
if line.include?("end") || line.include?("t.index")
|
777
|
+
new_line.write " }) {\n #{class_name.singularize.camelize(:lower)} {\n id\n"
|
778
|
+
break
|
779
|
+
end
|
780
|
+
type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
781
|
+
array_true = line.include?("array: true")
|
782
|
+
case name
|
783
|
+
when "created_at", "updated_at"
|
784
|
+
next
|
785
|
+
when "user_id"
|
786
|
+
@user_exist = true
|
787
|
+
when /$*_id\z/
|
788
|
+
new_line.write " #{name.singularize.camelize(:lower)}: \"\#{#{class_name.singularize}[:#{name.singularize.underscore}]}\"\n"
|
789
|
+
else
|
790
|
+
case type
|
791
|
+
when "string", "text", "date", "datetime"
|
792
|
+
if array_true && name != "tag"
|
793
|
+
new_line.write " #{name.pluralize.camelize(:lower)}: \#{#{class_name.singularize}[:#{name.pluralize.underscore}]}\n"
|
794
|
+
else
|
795
|
+
new_line.write " #{name.singularize.camelize(:lower)}: \"\#{#{class_name.singularize}[:#{name.singularize.underscore}]}\"\n"
|
678
796
|
end
|
797
|
+
when "bigint", "integer", "float", "boolean"
|
798
|
+
new_line.write " #{name.singularize.camelize(:lower)}: \#{#{class_name.singularize}[:#{name.singularize.underscore}]}\n"
|
679
799
|
end
|
680
800
|
end
|
681
|
-
|
682
|
-
|
683
|
-
|
801
|
+
end
|
802
|
+
if table_check(line: line, class_name: class_name)
|
803
|
+
@on = true
|
684
804
|
end
|
685
805
|
end
|
686
806
|
end
|
687
807
|
end
|
808
|
+
end
|
688
809
|
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
810
|
+
def rspec_mutation_params_response class_name: "souls"
|
811
|
+
file_path = "./spec/mutations/#{class_name.singularize}_spec.rb"
|
812
|
+
path = "./db/schema.rb"
|
813
|
+
@on = false
|
814
|
+
File.open(file_path, "a") do |new_line|
|
815
|
+
File.open(path, "r") do |f|
|
816
|
+
f.each_line.with_index do |line, i|
|
817
|
+
if @on
|
818
|
+
if line.include?("end") || line.include?("t.index")
|
819
|
+
if @user_exist
|
820
|
+
new_line.write <<-EOS
|
821
|
+
}
|
822
|
+
}
|
823
|
+
}
|
824
|
+
)
|
825
|
+
end
|
826
|
+
|
827
|
+
subject(:result) do
|
828
|
+
context = {
|
829
|
+
user: user
|
830
|
+
}
|
831
|
+
SoulsApiSchema.execute(mutation, context: context).as_json
|
832
|
+
end
|
833
|
+
|
834
|
+
it "return #{class_name.camelize} Data" do
|
835
|
+
a1 = result.dig("data", "create#{class_name.singularize.camelize}", "#{class_name.singularize.camelize(:lower)}")
|
836
|
+
expect(a1).to include(
|
837
|
+
"id" => be_a(String),
|
838
|
+
EOS
|
839
|
+
else
|
698
840
|
new_line.write <<-EOS
|
699
841
|
}
|
700
842
|
}
|
@@ -711,79 +853,81 @@ module Souls
|
|
711
853
|
expect(a1).to include(
|
712
854
|
"id" => be_a(String),
|
713
855
|
EOS
|
714
|
-
break
|
715
856
|
end
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
857
|
+
break
|
858
|
+
end
|
859
|
+
_, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
860
|
+
array_true = line.include?("array: true")
|
861
|
+
case name
|
862
|
+
when "user_id", "created_at", "updated_at", /$*_id\z/
|
863
|
+
next
|
864
|
+
else
|
865
|
+
if array_true
|
866
|
+
new_line.write " #{name.pluralize.camelize(:lower)}\n"
|
721
867
|
else
|
722
|
-
|
723
|
-
new_line.write " #{name.pluralize.camelize(:lower)}\n"
|
724
|
-
else
|
725
|
-
new_line.write " #{name.singularize.camelize(:lower)}\n"
|
726
|
-
end
|
868
|
+
new_line.write " #{name.singularize.camelize(:lower)}\n"
|
727
869
|
end
|
728
870
|
end
|
729
|
-
|
730
|
-
|
731
|
-
|
871
|
+
end
|
872
|
+
if table_check(line: line, class_name: class_name)
|
873
|
+
@on = true
|
732
874
|
end
|
733
875
|
end
|
734
876
|
end
|
735
877
|
end
|
878
|
+
end
|
736
879
|
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
end
|
751
|
-
EOS
|
752
|
-
break
|
753
|
-
end
|
754
|
-
type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
755
|
-
field ||= type_check type
|
756
|
-
array_true = line.include?("array: true")
|
757
|
-
case name
|
758
|
-
when "created_at", "updated_at"
|
759
|
-
next
|
760
|
-
else
|
761
|
-
case type
|
762
|
-
when "text", "date", "datetime"
|
763
|
-
if array_true
|
764
|
-
new_line.write " \"#{name.pluralize.camelize(:lower)}\" => be_all(String),\n"
|
765
|
-
else
|
766
|
-
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_a(String),\n"
|
880
|
+
def rspec_mutation_end class_name: "souls"
|
881
|
+
file_path = "./spec/mutations/#{class_name.singularize}_spec.rb"
|
882
|
+
path = "./db/schema.rb"
|
883
|
+
@on = false
|
884
|
+
File.open(file_path, "a") do |new_line|
|
885
|
+
File.open(path, "r") do |f|
|
886
|
+
f.each_line.with_index do |line, i|
|
887
|
+
if @on
|
888
|
+
if line.include?("end") || line.include?("t.index")
|
889
|
+
new_line.write <<~EOS
|
890
|
+
)
|
891
|
+
end
|
892
|
+
end
|
767
893
|
end
|
768
|
-
|
769
|
-
|
770
|
-
when "string", "bigint", "integer", "float"
|
771
|
-
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_a(#{field}),\n"
|
772
|
-
end
|
773
|
-
end
|
894
|
+
EOS
|
895
|
+
break
|
774
896
|
end
|
775
|
-
|
776
|
-
|
897
|
+
type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
898
|
+
field ||= type_check type
|
899
|
+
array_true = line.include?("array: true")
|
900
|
+
case name
|
901
|
+
when "user_id", "created_at", "updated_at", /$*_id\z/
|
902
|
+
next
|
903
|
+
else
|
904
|
+
case type
|
905
|
+
when "text", "date", "datetime"
|
906
|
+
if array_true
|
907
|
+
new_line.write " \"#{name.pluralize.camelize(:lower)}\" => be_all(String),\n"
|
908
|
+
else
|
909
|
+
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_a(String),\n"
|
910
|
+
end
|
911
|
+
when "boolean"
|
912
|
+
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_in([true, false]),\n"
|
913
|
+
when "string", "bigint", "integer", "float"
|
914
|
+
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_a(#{field}),\n"
|
915
|
+
end
|
777
916
|
end
|
778
917
|
end
|
918
|
+
if table_check(line: line, class_name: class_name)
|
919
|
+
@on = true
|
920
|
+
end
|
779
921
|
end
|
780
922
|
end
|
781
|
-
[file_path]
|
782
923
|
end
|
924
|
+
[file_path]
|
925
|
+
end
|
783
926
|
|
784
927
|
def rspec_mutation class_name: "souls"
|
785
928
|
singularized_class_name = class_name.singularize
|
786
929
|
rspec_mutation_head class_name: singularized_class_name
|
930
|
+
rspec_mutation_after_head class_name: singularized_class_name
|
787
931
|
rspec_mutation_params class_name: singularized_class_name
|
788
932
|
rspec_mutation_params_response class_name: singularized_class_name
|
789
933
|
rspec_mutation_end class_name: singularized_class_name
|
@@ -795,109 +939,141 @@ end
|
|
795
939
|
f.write <<~EOS
|
796
940
|
RSpec.describe \"#{class_name.camelize} Query テスト\" do
|
797
941
|
describe "#{class_name.camelize} データを取得する" do
|
798
|
-
let!(:#{class_name.singularize.underscore}) { FactoryBot.create(:#{class_name.singularize.underscore}) }
|
799
|
-
|
800
|
-
let(:query) do
|
801
|
-
data_id = Base64.encode64("#{class_name.camelize}:\#{#{class_name.singularize.underscore}.id}")
|
802
|
-
%(query {
|
803
|
-
#{class_name.singularize.camelize(:lower)}(id: \\"\#{data_id}\\") {
|
804
|
-
id
|
805
942
|
EOS
|
806
943
|
end
|
807
944
|
end
|
808
945
|
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
946
|
+
def rspec_query_after_head class_name: "souls"
|
947
|
+
file_path = "./spec/queries/#{class_name.singularize}_spec.rb"
|
948
|
+
path = "./db/schema.rb"
|
949
|
+
@on = false
|
950
|
+
@user_exist = false
|
951
|
+
@relation_params = []
|
952
|
+
File.open(file_path, "a") do |new_line|
|
953
|
+
File.open(path, "r") do |f|
|
954
|
+
f.each_line.with_index do |line, i|
|
955
|
+
if @on
|
956
|
+
if line.include?("end") || line.include?("t.index")
|
957
|
+
new_line.write <<-EOS
|
958
|
+
let(:#{class_name}) { FactoryBot.create(:#{class_name}, #{@relation_params.join(", ")}) }
|
959
|
+
|
960
|
+
let(:query) do
|
961
|
+
data_id = Base64.encode64("#{class_name.camelize}:\#{#{class_name.singularize.underscore}.id}")
|
962
|
+
%(query {
|
963
|
+
#{class_name.singularize.camelize(:lower)}(id: \\"\#{data_id}\\") {
|
964
|
+
id
|
965
|
+
EOS
|
966
|
+
break
|
967
|
+
end
|
968
|
+
_, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
969
|
+
case name
|
970
|
+
when /$*_id\z/
|
971
|
+
relation_col = name.gsub("_id", "")
|
972
|
+
@relation_params << "#{name}: #{relation_col}.id"
|
973
|
+
new_line.write " let(:#{relation_col}) { FactoryBot.create(:#{relation_col}) }\n"
|
974
|
+
end
|
975
|
+
end
|
976
|
+
if table_check(line: line, class_name: class_name)
|
977
|
+
@on = true
|
978
|
+
end
|
979
|
+
end
|
980
|
+
end
|
981
|
+
end
|
982
|
+
end
|
983
|
+
|
984
|
+
def rspec_query_params class_name: "souls"
|
985
|
+
file_path = "./spec/queries/#{class_name.singularize}_spec.rb"
|
986
|
+
path = "./db/schema.rb"
|
987
|
+
@on = false
|
988
|
+
File.open(file_path, "a") do |new_line|
|
989
|
+
File.open(path, "r") do |f|
|
990
|
+
f.each_line.with_index do |line, i|
|
991
|
+
if @on
|
992
|
+
if line.include?("end") || line.include?("t.index")
|
993
|
+
new_line.write <<-EOS
|
820
994
|
}
|
821
|
-
|
822
|
-
|
995
|
+
}
|
996
|
+
)
|
997
|
+
end
|
823
998
|
|
824
|
-
|
825
|
-
|
826
|
-
|
999
|
+
subject(:result) do
|
1000
|
+
SoulsApiSchema.execute(query).as_json
|
1001
|
+
end
|
827
1002
|
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
end
|
835
|
-
_, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
836
|
-
case name
|
837
|
-
when "created_at", "updated_at"
|
838
|
-
next
|
839
|
-
else
|
840
|
-
new_line.write " #{name.singularize.camelize(:lower)}\n"
|
841
|
-
end
|
1003
|
+
it "return #{class_name.camelize} Data" do
|
1004
|
+
a1 = result.dig("data", "#{class_name.singularize.camelize(:lower)}")
|
1005
|
+
expect(a1).to include(
|
1006
|
+
"id" => be_a(String),
|
1007
|
+
EOS
|
1008
|
+
break
|
842
1009
|
end
|
843
|
-
|
844
|
-
|
1010
|
+
_, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
1011
|
+
case name
|
1012
|
+
when "user_id", "created_at", "updated_at", /$*_id\z/
|
1013
|
+
next
|
1014
|
+
else
|
1015
|
+
new_line.write " #{name.singularize.camelize(:lower)}\n"
|
845
1016
|
end
|
846
1017
|
end
|
1018
|
+
if table_check(line: line, class_name: class_name)
|
1019
|
+
@on = true
|
1020
|
+
end
|
847
1021
|
end
|
848
1022
|
end
|
849
1023
|
end
|
1024
|
+
end
|
850
1025
|
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
1026
|
+
def rspec_query_end class_name: "souls"
|
1027
|
+
file_path = "./spec/queries/#{class_name.singularize}_spec.rb"
|
1028
|
+
path = "./db/schema.rb"
|
1029
|
+
@on = false
|
1030
|
+
File.open(file_path, "a") do |new_line|
|
1031
|
+
File.open(path, "r") do |f|
|
1032
|
+
f.each_line.with_index do |line, i|
|
1033
|
+
if @on
|
1034
|
+
if line.include?("end") || line.include?("t.index")
|
1035
|
+
new_line.write <<-EOS
|
861
1036
|
)
|
862
1037
|
end
|
863
1038
|
end
|
864
1039
|
end
|
865
|
-
|
866
|
-
|
867
|
-
end
|
868
|
-
type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
869
|
-
field ||= type_check type
|
870
|
-
array_true = line.include?("array: true")
|
871
|
-
case name
|
872
|
-
when "created_at", "updated_at"
|
873
|
-
next
|
874
|
-
else
|
875
|
-
case type
|
876
|
-
when "text", "date", "datetime"
|
877
|
-
if array_true
|
878
|
-
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_all(String),\n"
|
879
|
-
else
|
880
|
-
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_a(String),\n"
|
881
|
-
end
|
882
|
-
when "boolean"
|
883
|
-
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_in([true, false]),\n"
|
884
|
-
when "string", "bigint", "integer", "float"
|
885
|
-
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_a(#{field}),\n"
|
886
|
-
end
|
887
|
-
end
|
1040
|
+
EOS
|
1041
|
+
break
|
888
1042
|
end
|
889
|
-
|
890
|
-
|
1043
|
+
type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
1044
|
+
field ||= type_check type
|
1045
|
+
array_true = line.include?("array: true")
|
1046
|
+
case name
|
1047
|
+
when "user_id", "created_at", "updated_at", /$*_id\z/
|
1048
|
+
next
|
1049
|
+
else
|
1050
|
+
case type
|
1051
|
+
when "text", "date", "datetime"
|
1052
|
+
if array_true
|
1053
|
+
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_all(String),\n"
|
1054
|
+
else
|
1055
|
+
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_a(String),\n"
|
1056
|
+
end
|
1057
|
+
when "boolean"
|
1058
|
+
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_in([true, false]),\n"
|
1059
|
+
when "string", "bigint", "integer", "float"
|
1060
|
+
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_a(#{field}),\n"
|
1061
|
+
end
|
891
1062
|
end
|
892
1063
|
end
|
1064
|
+
if table_check(line: line, class_name: class_name)
|
1065
|
+
@on = true
|
1066
|
+
end
|
893
1067
|
end
|
894
1068
|
end
|
895
|
-
[file_path]
|
896
1069
|
end
|
1070
|
+
[file_path]
|
1071
|
+
end
|
897
1072
|
|
898
1073
|
def rspec_query class_name: "souls"
|
899
1074
|
singularized_class_name = class_name.singularize
|
900
1075
|
rspec_query_head class_name: singularized_class_name
|
1076
|
+
rspec_query_after_head class_name: singularized_class_name
|
901
1077
|
rspec_query_params class_name: singularized_class_name
|
902
1078
|
rspec_query_end class_name: singularized_class_name
|
903
1079
|
end
|
data/lib/souls/version.rb
CHANGED
data/souls.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative
|
1
|
+
require_relative "lib/souls/version"
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "souls"
|
@@ -6,7 +6,7 @@ Gem::Specification.new do |spec|
|
|
6
6
|
spec.authors = ["POPPIN-FUMI", "KishiTheMechanic", "James Neve"]
|
7
7
|
spec.email = ["fumitake.kawasaki@el-soul.com", "shota.kishi@el-soul.com", "jamesoneve@gmail.com"]
|
8
8
|
|
9
|
-
spec.summary = "SOULS is a Web Application Framework for Microservices on Multi Cloud Platform such as Google Cloud Platform, Amazon Web Services, and Alibaba Cloud. Auto deploy with scalable condition. You can focus on business logic. No more infra problems."
|
9
|
+
spec.summary = "SOULS is a GraphQL Based Web Application Framework for Microservices on Multi Cloud Platform such as Google Cloud Platform, Amazon Web Services, and Alibaba Cloud. Auto deploy with scalable condition. You can focus on business logic. No more infra problems."
|
10
10
|
spec.description = "SOULS is a Web Application Framework for Microservices on Multi Cloud Platform such as Google Cloud Platform, Amazon Web Services, and Alibaba Cloud. Auto deploy with scalable condition. You can focus on business logic. No more infra problems."
|
11
11
|
spec.homepage = "https://github.com/elsoul/souls"
|
12
12
|
spec.license = "Apache-2.0"
|
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.13.
|
4
|
+
version: 0.13.8
|
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-
|
13
|
+
date: 2021-02-02 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.
|
@@ -72,7 +72,8 @@ requirements: []
|
|
72
72
|
rubygems_version: 3.2.3
|
73
73
|
signing_key:
|
74
74
|
specification_version: 4
|
75
|
-
summary: SOULS is a Web Application Framework for Microservices on Multi
|
76
|
-
such as Google Cloud Platform, Amazon Web Services, and Alibaba Cloud.
|
77
|
-
with scalable condition. You can focus on business logic. No more infra
|
75
|
+
summary: SOULS is a GraphQL Based Web Application Framework for Microservices on Multi
|
76
|
+
Cloud Platform such as Google Cloud Platform, Amazon Web Services, and Alibaba Cloud.
|
77
|
+
Auto deploy with scalable condition. You can focus on business logic. No more infra
|
78
|
+
problems.
|
78
79
|
test_files: []
|