souls 0.13.1 → 0.13.7
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 +10 -8
- data/lib/souls/init.rb +367 -195
- 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: 53da6d8b3f84df3136e5e557035f68d23aa4cb97eb42648d7219ad521a58ec93
|
4
|
+
data.tar.gz: c12200d5439b99d52d3beef650f1513e21a8709d503fe2b3641f507bac278b86
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a28d17def0684d6622fd13d4979bdb855fc8ef0f69a2e425fbf0380e79751a0e4119cc597380879a21289d78463e7960a770ac1d50ba17c0c43592e6c683fee1
|
7
|
+
data.tar.gz: 1ce61c0bd694cfe6401c339cea92e0fa34ff1a5b15f40fb040b3d550a08af164b984fbbb6eee2c907d924f9750e1ad8eee0bc043f19f61dbfe6e5cff0dc08c39
|
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.6)
|
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
@@ -3,7 +3,7 @@ require "souls"
|
|
3
3
|
|
4
4
|
begin
|
5
5
|
begin
|
6
|
-
require "./config/initializers/souls" unless ARGV[0] == "new" || ARGV[0] == "init"
|
6
|
+
require "./config/initializers/souls" unless ARGV[0] == "new" || ARGV[0] == "init" || ARGV[0] == "s"
|
7
7
|
rescue
|
8
8
|
Souls::Init.config_init
|
9
9
|
end
|
@@ -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,81 +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"
|
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(#{field}),\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
|
-
when "date", "datetime"
|
773
|
-
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_a(DateTime),\n"
|
774
|
-
end
|
775
|
-
end
|
894
|
+
EOS
|
895
|
+
break
|
776
896
|
end
|
777
|
-
|
778
|
-
|
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
|
779
916
|
end
|
780
917
|
end
|
918
|
+
if table_check(line: line, class_name: class_name)
|
919
|
+
@on = true
|
920
|
+
end
|
781
921
|
end
|
782
922
|
end
|
783
|
-
[file_path]
|
784
923
|
end
|
924
|
+
[file_path]
|
925
|
+
end
|
785
926
|
|
786
927
|
def rspec_mutation class_name: "souls"
|
787
928
|
singularized_class_name = class_name.singularize
|
788
929
|
rspec_mutation_head class_name: singularized_class_name
|
930
|
+
rspec_mutation_after_head class_name: singularized_class_name
|
789
931
|
rspec_mutation_params class_name: singularized_class_name
|
790
932
|
rspec_mutation_params_response class_name: singularized_class_name
|
791
933
|
rspec_mutation_end class_name: singularized_class_name
|
@@ -797,111 +939,141 @@ end
|
|
797
939
|
f.write <<~EOS
|
798
940
|
RSpec.describe \"#{class_name.camelize} Query テスト\" do
|
799
941
|
describe "#{class_name.camelize} データを取得する" do
|
800
|
-
let!(:#{class_name.singularize.underscore}) { FactoryBot.create(:#{class_name.singularize.underscore}) }
|
801
|
-
|
802
|
-
let(:query) do
|
803
|
-
data_id = Base64.encode64("#{class_name.camelize}:\#{#{class_name.singularize.underscore}.id}")
|
804
|
-
%(query {
|
805
|
-
#{class_name.singularize.camelize(:lower)}(id: \\"\#{data_id}\\") {
|
806
|
-
id
|
807
942
|
EOS
|
808
943
|
end
|
809
944
|
end
|
810
945
|
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
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
|
822
994
|
}
|
823
|
-
|
824
|
-
|
995
|
+
}
|
996
|
+
)
|
997
|
+
end
|
825
998
|
|
826
|
-
|
827
|
-
|
828
|
-
|
999
|
+
subject(:result) do
|
1000
|
+
SoulsApiSchema.execute(query).as_json
|
1001
|
+
end
|
829
1002
|
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
836
|
-
end
|
837
|
-
_, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
838
|
-
case name
|
839
|
-
when "created_at", "updated_at"
|
840
|
-
next
|
841
|
-
else
|
842
|
-
new_line.write " #{name.singularize.camelize(:lower)}\n"
|
843
|
-
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
|
844
1009
|
end
|
845
|
-
|
846
|
-
|
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"
|
847
1016
|
end
|
848
1017
|
end
|
1018
|
+
if table_check(line: line, class_name: class_name)
|
1019
|
+
@on = true
|
1020
|
+
end
|
849
1021
|
end
|
850
1022
|
end
|
851
1023
|
end
|
1024
|
+
end
|
852
1025
|
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
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
|
863
1036
|
)
|
864
1037
|
end
|
865
1038
|
end
|
866
1039
|
end
|
867
|
-
|
868
|
-
|
869
|
-
end
|
870
|
-
type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
|
871
|
-
field ||= type_check type
|
872
|
-
array_true = line.include?("array: true")
|
873
|
-
case name
|
874
|
-
when "created_at", "updated_at"
|
875
|
-
next
|
876
|
-
else
|
877
|
-
case type
|
878
|
-
when "text"
|
879
|
-
if array_true
|
880
|
-
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_all(String),\n"
|
881
|
-
else
|
882
|
-
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_a(#{field}),\n"
|
883
|
-
end
|
884
|
-
when "boolean"
|
885
|
-
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_in([true, false]),\n"
|
886
|
-
when "string", "bigint", "integer", "float"
|
887
|
-
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_a(#{field}),\n"
|
888
|
-
when "date", "datetime"
|
889
|
-
new_line.write " \"#{name.singularize.camelize(:lower)}\" => be_a(DateTime),\n"
|
890
|
-
end
|
891
|
-
end
|
1040
|
+
EOS
|
1041
|
+
break
|
892
1042
|
end
|
893
|
-
|
894
|
-
|
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
|
895
1062
|
end
|
896
1063
|
end
|
1064
|
+
if table_check(line: line, class_name: class_name)
|
1065
|
+
@on = true
|
1066
|
+
end
|
897
1067
|
end
|
898
1068
|
end
|
899
|
-
[file_path]
|
900
1069
|
end
|
1070
|
+
[file_path]
|
1071
|
+
end
|
901
1072
|
|
902
1073
|
def rspec_query class_name: "souls"
|
903
1074
|
singularized_class_name = class_name.singularize
|
904
1075
|
rspec_query_head class_name: singularized_class_name
|
1076
|
+
rspec_query_after_head class_name: singularized_class_name
|
905
1077
|
rspec_query_params class_name: singularized_class_name
|
906
1078
|
rspec_query_end class_name: singularized_class_name
|
907
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.7
|
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: []
|