souls 0.60.0 → 0.61.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 (51) hide show
  1. checksums.yaml +4 -4
  2. data/lib/souls/cli/db/index.rb +12 -12
  3. data/lib/souls/{api → cli}/generate/application.rb +48 -23
  4. data/lib/souls/{api → cli}/generate/connection.rb +0 -0
  5. data/lib/souls/{api → cli}/generate/connection_rbs.rb +0 -0
  6. data/lib/souls/{api → cli}/generate/edge.rb +0 -0
  7. data/lib/souls/{api → cli}/generate/edge_rbs.rb +0 -0
  8. data/lib/souls/{api → cli}/generate/index.rb +7 -2
  9. data/lib/souls/{worker → cli}/generate/job.rb +3 -2
  10. data/lib/souls/{worker → cli}/generate/job_rbs.rb +2 -1
  11. data/lib/souls/{api → cli}/generate/manager.rb +4 -2
  12. data/lib/souls/cli/generate/manager_rbs.rb +34 -0
  13. data/lib/souls/{api → cli}/generate/model.rb +0 -0
  14. data/lib/souls/{api → cli}/generate/model_rbs.rb +2 -4
  15. data/lib/souls/{api → cli}/generate/mutation.rb +43 -87
  16. data/lib/souls/{api → cli}/generate/mutation_rbs.rb +0 -0
  17. data/lib/souls/{api → cli}/generate/policy.rb +0 -0
  18. data/lib/souls/{api → cli}/generate/policy_rbs.rb +0 -0
  19. data/lib/souls/{api → cli}/generate/query.rb +0 -0
  20. data/lib/souls/{api → cli}/generate/query_rbs.rb +0 -0
  21. data/lib/souls/{api → cli}/generate/resolver.rb +0 -0
  22. data/lib/souls/{api → cli}/generate/resolver_rbs.rb +0 -3
  23. data/lib/souls/{api → cli}/generate/rspec_factory.rb +0 -0
  24. data/lib/souls/cli/generate/rspec_job.rb +48 -0
  25. data/lib/souls/cli/generate/rspec_manager.rb +49 -0
  26. data/lib/souls/{api → cli}/generate/rspec_model.rb +0 -0
  27. data/lib/souls/{api → cli}/generate/rspec_mutation.rb +0 -0
  28. data/lib/souls/{api → cli}/generate/rspec_policy.rb +0 -0
  29. data/lib/souls/{api → cli}/generate/rspec_query.rb +0 -0
  30. data/lib/souls/{api → cli}/generate/rspec_resolver.rb +0 -0
  31. data/lib/souls/{api → cli}/generate/type.rb +0 -0
  32. data/lib/souls/{api → cli}/generate/type_rbs.rb +0 -0
  33. data/lib/souls/cli/index.rb +2 -0
  34. data/lib/souls/cli/init/index.rb +5 -3
  35. data/lib/souls/{api → cli}/update/index.rb +0 -0
  36. data/lib/souls/{api → cli}/update/mutation.rb +0 -0
  37. data/lib/souls/{api → cli}/update/resolver.rb +0 -0
  38. data/lib/souls/{api → cli}/update/rspec_factory.rb +0 -0
  39. data/lib/souls/{api → cli}/update/rspec_mutation.rb +0 -0
  40. data/lib/souls/{api → cli}/update/rspec_resolver.rb +0 -0
  41. data/lib/souls/{api → cli}/update/type.rb +0 -0
  42. data/lib/souls/cli.rb +14 -20
  43. data/lib/souls/index.rb +0 -2
  44. data/lib/souls/version.rb +1 -1
  45. data/lib/souls/versions/.souls_api_version +1 -1
  46. data/lib/souls/versions/.souls_worker_version +1 -1
  47. metadata +42 -43
  48. data/lib/souls/api/generate/manager_rbs.rb +0 -32
  49. data/lib/souls/api/index.rb +0 -14
  50. data/lib/souls/worker/generate/index.rb +0 -2
  51. data/lib/souls/worker/index.rb +0 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 70d25691a6e93376b3393efc7b95c0585995bf1611cce81b463a4db3f17497ca
4
- data.tar.gz: 0a1fe1bcc547ad5c41d85a5bf814157f171eb5aec5f8b1ce5f847bf509a6a6fd
3
+ metadata.gz: 630be09191b9f58ffab7b304d247f4c5b8bc07e6f75c224badce92e946d4e35a
4
+ data.tar.gz: aec39e44cc2a9bf871290b5abd310d7b287b0dabb2c774a7ad4bf19fe5eb837a
5
5
  SHA512:
6
- metadata.gz: 01fdbaa3e67ed0cfc1d4a78c56e55046f4e3bf3c413e7170eefb9b2ffb661cd86721140553e01807a9fe82db553003c7b108b90081ec9ca77b336e70c579577c
7
- data.tar.gz: 8d83326353d091c5655ff463ee1d7e72582d8a66be7c40567206811b3b4b1a4f25c2796ec3362fa01f7142b8651f60a60c76cd4852e6b4032f3cabc49102bf08
6
+ metadata.gz: e7f386e93badfffc73c33a66079765644592357a18314f801299e7a3f63293b7379738fe874601263734e1cd658337862e378375221a897c7188dc79ee4c35f9
7
+ data.tar.gz: df0659b22c6a7d76b15c3413535c80fb014bfd497ced5ebbd01184bafacdca24a6c460097b39698f4e5bf56ceeb102c863b860ba12ac81130e844b41382fb33e
@@ -1,6 +1,6 @@
1
1
  module Souls
2
- class CLI < Thor
3
- desc "db:migrate", "Migrate Database"
2
+ class DB < Thor
3
+ desc "migrate", "Migrate Database"
4
4
  method_option :env, aliases: "--e", default: "development", desc: "Difine APP Enviroment - development | production"
5
5
  def migrate
6
6
  case options[:env]
@@ -15,9 +15,9 @@ module Souls
15
15
  raise(Thor::Error, e)
16
16
  end
17
17
 
18
- desc "db:create", "Create Database"
18
+ desc "create", "Create Database"
19
19
  method_option :env, aliases: "--e", default: "development", desc: "Difine APP Enviroment - development | production"
20
- def db_create
20
+ def create
21
21
  case options[:env]
22
22
  when "production"
23
23
  system("rake db:create RACK_ENV=production")
@@ -29,7 +29,7 @@ module Souls
29
29
  raise(Thor::Error, e)
30
30
  end
31
31
 
32
- desc "db:seed", "Insert Seed Data"
32
+ desc "seed", "Insert Seed Data"
33
33
  method_option :env, aliases: "--e", default: "development", desc: "Difine APP Enviroment - development | production"
34
34
  def seed
35
35
  case options[:env]
@@ -43,7 +43,7 @@ module Souls
43
43
  raise(Thor::Error, e)
44
44
  end
45
45
 
46
- desc "db:migrate:reset", "Reset Database"
46
+ desc "migrate_reset", "Reset Database"
47
47
  method_option :env, aliases: "--e", default: "development", desc: "Difine APP Enviroment - development | production"
48
48
  def migrate_reset
49
49
  case options[:env]
@@ -57,7 +57,7 @@ module Souls
57
57
  raise(Thor::Error, e)
58
58
  end
59
59
 
60
- desc "db:create_migration [CLASS_NAME]", "Create ActiveRecord Migration File"
60
+ desc "create_migration [CLASS_NAME]", "Create ActiveRecord Migration File"
61
61
  def create_migration(class_name)
62
62
  pluralized_class_name = class_name.underscore.pluralize
63
63
  system("rake db:create_migration NAME=create_#{pluralized_class_name}")
@@ -79,7 +79,7 @@ module Souls
79
79
  raise(Thor::Error, e)
80
80
  end
81
81
 
82
- desc "db:add_column [CLASS_NAME]", "Create ActiveRecord Migration File"
82
+ desc "add_column [CLASS_NAME]", "Create ActiveRecord Migration File"
83
83
  def add_column(class_name)
84
84
  pluralized_class_name = class_name.underscore.pluralize
85
85
  system("rake db:create_migration NAME=add_column_to_#{pluralized_class_name}")
@@ -87,7 +87,7 @@ module Souls
87
87
  raise(Thor::Error, e)
88
88
  end
89
89
 
90
- desc "db:rename_column [CLASS_NAME]", "Create ActiveRecord Migration File"
90
+ desc "rename_column [CLASS_NAME]", "Create ActiveRecord Migration File"
91
91
  def rename_column(class_name)
92
92
  pluralized_class_name = class_name.underscore.pluralize
93
93
  system("rake db:create_migration NAME=rename_column_to_#{pluralized_class_name}")
@@ -95,7 +95,7 @@ module Souls
95
95
  raise(Thor::Error, e)
96
96
  end
97
97
 
98
- desc "db:change_column [CLASS_NAME]", "Create ActiveRecord Migration File"
98
+ desc "change_column [CLASS_NAME]", "Create ActiveRecord Migration File"
99
99
  def change_column(class_name)
100
100
  pluralized_class_name = class_name.underscore.pluralize
101
101
  system("rake db:create_migration NAME=change_column_to_#{pluralized_class_name}")
@@ -103,7 +103,7 @@ module Souls
103
103
  raise(Thor::Error, e)
104
104
  end
105
105
 
106
- desc "db:remove_column [CLASS_NAME]", "Create ActiveRecord Migration File"
106
+ desc "remove_column [CLASS_NAME]", "Create ActiveRecord Migration File"
107
107
  def remove_column(class_name)
108
108
  pluralized_class_name = class_name.underscore.pluralize
109
109
  system("rake db:create_migration NAME=remove_column_to_#{pluralized_class_name}")
@@ -111,7 +111,7 @@ module Souls
111
111
  raise(Thor::Error, e)
112
112
  end
113
113
 
114
- desc "db:drop_table [CLASS_NAME]", "Create ActiveRecord Migration File"
114
+ desc "drop_table [CLASS_NAME]", "Create ActiveRecord Migration File"
115
115
  def drop_table(class_name)
116
116
  pluralized_class_name = class_name.underscore.pluralize
117
117
  system("rake db:create_migration NAME=drop_table_to_#{pluralized_class_name}")
@@ -1,40 +1,29 @@
1
1
  module Souls
2
2
  class Generate < Thor
3
3
  desc "scaffold [CLASS_NAME]", "Generate Scaffold from schema.rb"
4
+ method_option :rbs, type: :boolean, aliases: "--rbs", default: false, desc: "Generates Only RBS Files"
4
5
  def scaffold(class_name)
5
6
  singularized_class_name = class_name.singularize
6
- model(singularized_class_name)
7
- model_rbs(singularized_class_name)
8
- type(singularized_class_name)
9
- type_rbs(singularized_class_name)
10
- query(singularized_class_name)
11
- query_rbs(singularized_class_name)
12
- mutation(singularized_class_name)
13
- mutation_rbs(singularized_class_name)
14
- policy(singularized_class_name)
15
- policy_rbs(singularized_class_name)
16
- edge(singularized_class_name)
17
- edge_rbs(singularized_class_name)
18
- connection(singularized_class_name)
19
- connection_rbs(singularized_class_name)
20
- resolver(singularized_class_name)
21
- resolver_rbs(singularized_class_name)
22
- rspec_factory(singularized_class_name)
23
- rspec_model(singularized_class_name)
24
- rspec_mutation(singularized_class_name)
25
- rspec_query(singularized_class_name)
26
- rspec_resolver(singularized_class_name)
27
- rspec_policy(singularized_class_name)
7
+ if options[:rbs]
8
+ run_scaffold(class_name: singularized_class_name)
9
+ else
10
+ run_rbs_scaffold(class_name: singularized_class_name)
11
+ end
28
12
  true
29
13
  rescue Thor::Error => e
30
14
  raise(Thor::Error, e)
31
15
  end
32
16
 
33
17
  desc "scaffold_all", "Generate Scaffold All Tables from schema.rb"
18
+ method_option :rbs, type: :boolean, aliases: "--rbs", default: false, desc: "Generates Only RBS All Schema Files"
34
19
  def scaffold_all
35
20
  puts(Paint["Let's Go SOULs AUTO CRUD Assist!\n", :cyan])
36
21
  Souls.get_tables.each do |table|
37
- Souls::Generate.new.scaffold(table.singularize)
22
+ if options[:rbs]
23
+ Souls::Generate.new.invoke(:scaffold_all, [table.singularize], { rbs: options[:rbs] })
24
+ else
25
+ Souls::Generate.new.invoke(:scaffold_all, [table.singularize], {})
26
+ end
38
27
  puts(Paint["Generated #{table.camelize} CRUD Files\n", :yellow])
39
28
  end
40
29
  true
@@ -68,6 +57,42 @@ module Souls
68
57
 
69
58
  private
70
59
 
60
+ def run_scaffold(class_name: "user")
61
+ model(class_name: class_name)
62
+ model_rbs(class_name: class_name)
63
+ type(class_name: class_name)
64
+ type_rbs(class_name: class_name)
65
+ query(class_name: class_name)
66
+ query_rbs(class_name: class_name)
67
+ mutation(class_name: class_name)
68
+ mutation_rbs(class_name: class_name)
69
+ policy(class_name: class_name)
70
+ policy_rbs(class_name: class_name)
71
+ edge(class_name: class_name)
72
+ edge_rbs(class_name: class_name)
73
+ connection(class_name: class_name)
74
+ connection_rbs(class_name: class_name)
75
+ resolver(class_name: class_name)
76
+ resolver_rbs(class_name: class_name)
77
+ rspec_factory(class_name: class_name)
78
+ rspec_model(class_name: class_name)
79
+ rspec_mutation(class_name: class_name)
80
+ rspec_query(class_name: class_name)
81
+ rspec_resolver(class_name: class_name)
82
+ rspec_policy(class_name: class_name)
83
+ end
84
+
85
+ def run_rbs_scaffold(class_name: "user")
86
+ model_rbs(class_name: class_name)
87
+ type_rbs(class_name: class_name)
88
+ query_rbs(class_name: class_name)
89
+ mutation_rbs(class_name: class_name)
90
+ policy_rbs(class_name: class_name)
91
+ edge_rbs(class_name: class_name)
92
+ connection_rbs(class_name: class_name)
93
+ resolver_rbs(class_name: class_name)
94
+ end
95
+
71
96
  def generated_paths(class_name: "user")
72
97
  singularized_class_name = class_name.singularize.underscore
73
98
  pluralized_class_name = class_name.pluralize.underscore
File without changes
File without changes
File without changes
File without changes
@@ -1,7 +1,7 @@
1
1
  require_paths = []
2
- dev_path = "lib/souls/api/generate/*"
2
+ dev_path = "lib/souls/cli/generate/*"
3
3
  souls_path = Dir["#{Gem.dir}/gems/souls-*"].last
4
- gem_path = "#{souls_path}/lib/souls/api/generate/*"
4
+ gem_path = "#{souls_path}/lib/souls/cli/generate/*"
5
5
  file_paths = File.exist?("souls.gemspec") ? dev_path : gem_path
6
6
  Dir[file_paths].map do |n|
7
7
  next if n.include?("index.rb")
@@ -11,3 +11,8 @@ end
11
11
  require_paths.each do |path|
12
12
  require_relative "./#{path}"
13
13
  end
14
+
15
+ module Souls
16
+ class Generate < Thor
17
+ end
18
+ end
@@ -6,16 +6,17 @@ module Souls
6
6
  if options[:mailer]
7
7
  mailgun_mailer(class_name: class_name)
8
8
  else
9
- create_mutation(class_name: class_name)
9
+ create_job_mutation(class_name: class_name)
10
10
  end
11
11
  Souls::Generate.new.invoke(:job_rbs, [class_name], {})
12
+ Souls::Generate.new.invoke(:rspec_job, [class_name], {})
12
13
  rescue Thor::Error => e
13
14
  raise(Thor::Error, e)
14
15
  end
15
16
 
16
17
  private
17
18
 
18
- def create_mutation(class_name: "send-mailer")
19
+ def create_job_mutation(class_name: "send-mailer")
19
20
  file_dir = "./app/graphql/mutations/"
20
21
  FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
21
22
  file_path = "#{file_dir}#{class_name.singularize}.rb"
@@ -3,9 +3,10 @@ module Souls
3
3
  desc "job_rbs [CLASS_NAME]", "Generate SOULs Job Mutation RBS Template"
4
4
  def job_rbs(class_name)
5
5
  file_path = ""
6
+ worker_name = FileUtils.pwd.split("/").last
6
7
  Dir.chdir(Souls.get_mother_path.to_s) do
7
8
  singularized_class_name = class_name.underscore.singularize
8
- file_dir = "./sig/#{singularized_class_name}/app/graphql/mutations/"
9
+ file_dir = "./sig/#{worker_name}/app/graphql/mutations/"
9
10
  FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
10
11
  file_path = "#{file_dir}#{singularized_class_name}.rbs"
11
12
  File.open(file_path, "w") do |f|
@@ -16,14 +16,15 @@ module Souls
16
16
  class #{options[:mutation].underscore.camelize} < BaseMutation
17
17
  description "#{options[:mutation]} description"
18
18
  ## Edit `argument` and `field`
19
- argument :argment, String, required: true
19
+ argument :argument, String, required: true
20
20
 
21
21
  field :response, String, null: false
22
22
 
23
23
  def resolve(args)
24
24
  # Define Here
25
+ { response: "success!" }
25
26
  rescue StandardError => e
26
- GraphQL::ExecutionError.new(e.to_s)
27
+ GraphQL::ExecutionError.new(e.message)
27
28
  end
28
29
  end
29
30
  end
@@ -32,6 +33,7 @@ module Souls
32
33
  end
33
34
  puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
34
35
  Souls::Generate.new.invoke(:manager_rbs, [singularized_class_name], { mutation: options[:mutation] })
36
+ Souls::Generate.new.invoke(:rspec_manager, [singularized_class_name], { mutation: options[:mutation] })
35
37
  file_path
36
38
  rescue Thor::Error => e
37
39
  raise(Thor::Error, e)
@@ -0,0 +1,34 @@
1
+ module Souls
2
+ class Generate < Thor
3
+ desc "manager_rbs [CLASS_NAME]", "Generate SOULs Manager RBS Template"
4
+ method_option :mutation, aliases: "--mutation", required: true, desc: "Mutation File Name"
5
+ def manager_rbs(class_name)
6
+ file_path = ""
7
+ singularized_class_name = class_name.underscore.singularize
8
+ Dir.chdir(Souls.get_mother_path.to_s) do
9
+ file_dir = "./sig/api/app/graphql/mutations/managers/#{singularized_class_name}_manager"
10
+ FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
11
+ file_path = "#{file_dir}/#{options[:mutation]}.rbs"
12
+ File.open(file_path, "w") do |f|
13
+ f.write(<<~TEXT)
14
+ module Mutations
15
+ module Managers
16
+ module #{singularized_class_name.camelize}Manager
17
+ class #{options[:mutation].singularize.camelize}
18
+ def self.description: (String)-> untyped
19
+ def self.argument: (untyped, untyped, untyped)-> untyped
20
+ def self.field: (untyped, untyped, untyped)-> untyped
21
+ end
22
+ end
23
+ end
24
+ end
25
+ TEXT
26
+ puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
27
+ end
28
+ end
29
+ file_path
30
+ rescue Thor::Error => e
31
+ raise(Thor::Error, e)
32
+ end
33
+ end
34
+ end
File without changes
@@ -4,15 +4,13 @@ module Souls
4
4
  def model_rbs(class_name)
5
5
  file_path = ""
6
6
  Dir.chdir(Souls.get_mother_path.to_s) do
7
- file_dir = "./sig/api/app/graphql/types/models/"
7
+ file_dir = "./sig/api/app/models/"
8
8
  FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
9
9
  singularized_class_name = class_name.underscore.singularize
10
10
  file_path = "#{file_dir}#{singularized_class_name}_model.rbs"
11
11
  File.open(file_path, "w") do |f|
12
12
  f.write(<<~TEXT)
13
- module Types
14
- class #{singularized_class_name.camelize} < ActiveRecord::Base
15
- end
13
+ class #{singularized_class_name.camelize} < ActiveRecord::Base
16
14
  end
17
15
  TEXT
18
16
  end
@@ -8,10 +8,7 @@ module Souls
8
8
  file_path = "./app/graphql/mutations/base/#{singularized_class_name}/create_#{singularized_class_name}.rb"
9
9
  return "Mutation already exist! #{file_path}" if File.exist?(file_path)
10
10
 
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)
11
+ create_mutation(class_name: singularized_class_name)
15
12
  update_mutation(class_name: singularized_class_name)
16
13
  delete_mutation(class_name: singularized_class_name)
17
14
  destroy_delete_mutation(class_name: singularized_class_name)
@@ -23,99 +20,58 @@ module Souls
23
20
 
24
21
  private
25
22
 
26
- def create_mutation_head(class_name: "user")
23
+ def create_mutation(class_name: "user")
24
+ file_path = ""
27
25
  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
40
- end
41
- file_path
42
- end
43
-
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)
57
-
58
- def resolve args
59
- params = args.dup
60
- params[:user_id] = context[:user][:id]
61
- TEXT
62
- else
63
- new_line.write(<<-TEXT)
26
+ Dir.chdir(Souls.get_mother_path.to_s) do
27
+ file_dir = "./app/graphql/mutations/base/#{singularized_class_name}"
28
+ FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
29
+ file_path = "#{file_dir}/create_#{singularized_class_name}.rb"
30
+ raise(Thor::Error, "Mutation RBS already exist! #{file_path}") if File.exist?(file_path)
31
+
32
+ params = Souls.get_relation_params(class_name: singularized_class_name, col: "mutation")
33
+ File.open(file_path, "w") do |f|
34
+ f.write(<<~TEXT)
35
+ module Mutations
36
+ module Base::#{singularized_class_name.camelize}
37
+ class Create#{singularized_class_name.camelize} < BaseMutation
38
+ field :#{singularized_class_name}_edge, Types::#{singularized_class_name.camelize}Type.edge_type, null: false
39
+ field :error, String, null: true
40
+ #{' '}
41
+ def resolve(args)
42
+ TEXT
43
+ end
44
+ File.open(file_path, "a") do |f|
45
+ if params[:relation_params]
46
+ f.write(" user_id = context[:user][:id]\n") if params[:user_exist]
47
+ params[:relation_params].each_with_index do |col, _i|
48
+ next if col[:column_name] == "user_id"
64
49
 
65
- def resolve args
66
- TEXT
67
- end
68
- break
69
- end
70
- field = "[String]" if line.include?("array: true")
71
- type, name = line.split(",")[0].gsub("\"", "").scan(/((?<=t\.).+(?=\s)) (.+)/)[0]
72
- field ||= Souls.type_check(type)
73
- case name
74
- when "user_id"
75
- @user_exist = true
76
- when /$*_id\z/
77
- @relation_params << name
78
- new_line.write(" argument :#{name}, String, required: false\n")
79
- when "created_at", "updated_at"
80
- next
81
- else
82
- new_line.write(" argument :#{name}, #{field}, required: false\n")
83
- end
50
+ f.write(" #{col[:column_name]} = SoulsApiSchema.from_global_id(args[:#{col[:column_name]}])\n")
84
51
  end
85
- @on = true if Souls.table_check(line: line, class_name: class_name)
52
+ relation_params =
53
+ params[:relation_params].map do |n|
54
+ ", #{n[:column_name]}: #{n[:column_name]}"
55
+ end
56
+ f.write(" new_record = { **args #{relation_params.compact.join} }\n")
57
+ f.write(" data = ::#{singularized_class_name.camelize}.new(new_record)\n")
58
+ else
59
+ f.write(" data = ::#{singularized_class_name.camelize}.new(args)\n")
86
60
  end
87
61
  end
88
- end
89
- @relation_params
90
- end
91
-
92
- def create_mutation_after_params(class_name: "user", relation_params: [])
93
- return false if relation_params.empty?
94
-
95
- file_path = "./app/graphql/mutations/base/#{class_name}/create_#{class_name}.rb"
96
- relation_params.each do |params_name|
97
62
  File.open(file_path, "a") do |new_line|
98
- new_line.write(" _, args[:#{params_name}] = SoulsApiSchema.from_global_id(args[:#{params_name}])\n")
99
- end
100
- end
101
- true
102
- end
63
+ new_line.write(<<~TEXT)
64
+ raise(StandardError, data.errors.full_messages) unless data.save
103
65
 
104
- def create_mutation_end(class_name: "user")
105
- file_path = "./app/graphql/mutations/base/#{class_name}/create_#{class_name}.rb"
106
- File.open(file_path, "a") do |new_line|
107
- new_line.write(<<~TEXT)
108
- data = ::#{class_name.camelize}.new args
109
- raise(StandardError, data.errors.full_messages) unless data.save
110
-
111
- { #{class_name}_edge: { node: data } }
112
- rescue StandardError => error
113
- GraphQL::ExecutionError.new(error.message)
66
+ { #{singularized_class_name}_edge: { node: data } }
67
+ rescue StandardError => error
68
+ GraphQL::ExecutionError.new(error.message)
69
+ end
114
70
  end
115
71
  end
116
72
  end
117
- end
118
- TEXT
73
+ TEXT
74
+ end
119
75
  end
120
76
  file_path
121
77
  end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -14,9 +14,6 @@ module Souls
14
14
  f.write(<<~TEXT)
15
15
  class Base
16
16
  end
17
- module SearchObject
18
- def self.module: (Symbol) -> untyped
19
- end
20
17
  class #{singularized_class_name.camelize}Search < Base
21
18
  include SearchObject
22
19
  def self.scope: () ?{ () -> nil } -> [Hash[Symbol, untyped]]
File without changes
@@ -0,0 +1,48 @@
1
+ module Souls
2
+ class Generate < Thor
3
+ desc "rspec_job [CLASS_NAME]", "Generate Rspec Job Test Template"
4
+ def rspec_job(class_name)
5
+ singularized_class_name = class_name.underscore.singularize
6
+ file_dir = "./spec/mutations/jobs/"
7
+ FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
8
+ file_path = "#{file_dir}/#{singularized_class_name}_spec.rb"
9
+ return "RspecJob already exist! #{file_path}" if File.exist?(file_path)
10
+
11
+ File.open(file_path, "w") do |f|
12
+ f.write(<<~TEXT)
13
+ RSpec.describe("#{class_name.singularize.camelize}") do
14
+ describe "Define #{class_name.singularize.camelize}" do
15
+
16
+ let(:mutation) do
17
+ %(mutation {
18
+ #{class_name.singularize.camelize(:lower)}(input: {}) {
19
+ response
20
+ }
21
+ }
22
+ )
23
+ end
24
+
25
+ subject(:result) do
26
+ SoulsApiSchema.execute(mutation).as_json
27
+ end
28
+
29
+ it "return StockSheet Data" do
30
+ begin
31
+ a1 = result.dig("data", "#{options[:mutation].singularize.camelize(:lower)}", "response")
32
+ raise unless a1.present?
33
+ rescue StandardError
34
+ raise(StandardError, result)
35
+ end
36
+ expect(a1).to(include("response" => be_a(String)))
37
+ end
38
+ end
39
+ end
40
+ TEXT
41
+ end
42
+ puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
43
+ file_path
44
+ rescue Thor::Error => e
45
+ raise(Thor::Error, e)
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,49 @@
1
+ module Souls
2
+ class Generate < Thor
3
+ desc "rspec_manager [CLASS_NAME]", "Generate Rspec Manager Test Template"
4
+ method_option :mutation, aliases: "--mutation", required: true, desc: "Mutation File Name"
5
+ def rspec_manager(class_name)
6
+ singularized_class_name = class_name.underscore.singularize
7
+ file_dir = "./spec/managers/"
8
+ FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
9
+ file_path = "./spec/mutations/managers/#{singularized_class_name}/#{options[:mutation]}_spec.rb"
10
+ return "RspecManager already exist! #{file_path}" if File.exist?(file_path)
11
+
12
+ File.open(file_path, "w") do |f|
13
+ f.write(<<~TEXT)
14
+ RSpec.describe("#{options[:mutation].singularize.camelize}") do
15
+ describe "Define #{options[:mutation].singularize.camelize}" do
16
+
17
+ let(:mutation) do
18
+ %(mutation {
19
+ #{options[:mutation].singularize.camelize(:lower)}(input: {}) {
20
+ response
21
+ }
22
+ }
23
+ )
24
+ end
25
+
26
+ subject(:result) do
27
+ SoulsApiSchema.execute(mutation).as_json
28
+ end
29
+
30
+ it "return StockSheet Data" do
31
+ begin
32
+ a1 = result.dig("data", "#{options[:mutation].singularize.camelize(:lower)}", "response")
33
+ raise unless a1.present?
34
+ rescue StandardError
35
+ raise(StandardError, result)
36
+ end
37
+ expect(a1).to(include("response" => be_a(String)))
38
+ end
39
+ end
40
+ end
41
+ TEXT
42
+ end
43
+ puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
44
+ file_path
45
+ rescue Thor::Error => e
46
+ raise(Thor::Error, e)
47
+ end
48
+ end
49
+ end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,4 +1,6 @@
1
1
  require_relative "./console/index"
2
+ require_relative "./generate/index"
3
+ require_relative "./update/index"
2
4
  require_relative "./create/index"
3
5
  require_relative "./db/index"
4
6
  require_relative "./docker/index"
@@ -14,10 +14,11 @@ module Souls
14
14
  download_github_actions(app_name: app_name)
15
15
  initial_config_init(app_name: app_name, service_name: service_name)
16
16
  system("cd #{app_name} && souls add_submodule")
17
+ system("cd #{app_name} && git init")
17
18
  souls_api_credit(app_name: app_name, service_name: service_name)
18
19
  end
19
20
 
20
- desc "init", "Run git submodule add RBS collection"
21
+ desc "add_submodule", "Run git submodule add RBS collection"
21
22
  def add_submodule
22
23
  system("git submodule add https://github.com/ruby/gem_rbs_collection.git vendor/rbs/gem_rbs_collection")
23
24
  end
@@ -161,10 +162,10 @@ module Souls
161
162
  system("cd #{app_name} && curl -OL https://storage.googleapis.com/souls-bucket/boilerplates/Procfile.dev")
162
163
  system("cd #{app_name} && curl -OL https://storage.googleapis.com/souls-bucket/boilerplates/Procfile")
163
164
  system("cd #{app_name} && curl -OL https://storage.googleapis.com/souls-bucket/boilerplates/Steepfile")
164
- system("cd #{app_name} && git init")
165
165
  system("cd #{app_name} && curl -OL https://storage.googleapis.com/souls-bucket/boilerplates/gitignore")
166
166
  system("cd #{app_name} && mv gitignore .gitignore")
167
167
  system("cd #{app_name} && bundle")
168
+ system("cd #{app_name}/apps/api && bundle")
168
169
  FileUtils.rm(sig_name)
169
170
  end
170
171
 
@@ -195,7 +196,8 @@ module Souls
195
196
  Easy to Run
196
197
  $ cd #{app_name}
197
198
  $ souls check
198
- $ cd apps/api && souls s
199
+ $ cd apps/api
200
+ $ souls s
199
201
  Go To : http://localhost:4000
200
202
 
201
203
  Doc: https://souls.elsoul.nl
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/lib/souls/cli.rb CHANGED
@@ -1,40 +1,34 @@
1
1
  require "souls"
2
2
  module Souls
3
3
  class CLI < Thor
4
- desc "api [COMMAND]", "SOULs API Commands"
5
- subcommand "api", API
4
+ desc "generate [COMMAND]", "SOULs Generate Commands"
5
+ subcommand "generate", Generate
6
6
 
7
- desc "gcloud [COMMAND]", "SOULs Gcloud Commands"
8
- subcommand "gcloud", Gcloud
7
+ desc "update [COMMAND]", "SOULs Update Commands"
8
+ subcommand "update", Update
9
+
10
+ desc "create [COMMAND]", "SOULs Create Worker"
11
+ subcommand "create", Create
12
+
13
+ desc "db [COMMAND]", "SOULs DB Commands"
14
+ subcommand "db", DB
9
15
 
10
16
  desc "docker [COMMAND]", "SOULs Docker Commands"
11
17
  subcommand "docker", Docker
12
18
 
13
- desc "create [COMMAND]", "SOULs Create Worker"
14
- subcommand "create", Create
19
+ desc "gcloud [COMMAND]", "SOULs Gcloud Commands"
20
+ subcommand "gcloud", Gcloud
15
21
 
16
22
  desc "sync", " SOULs Sync Commands"
17
23
  subcommand "sync", Sync
18
24
 
19
- desc "upgrade", "SOULs Upgrade Commands"
25
+ desc "upgrade gemfile", "SOULs Upgrade Gemfile & Gemfile.lock"
20
26
  subcommand "upgrade", Upgrade
21
27
 
22
- desc "worker [COMMAND]", "SOULs Worker Commands"
23
- subcommand "worker", Worker
24
-
25
28
  # rubocop:disable Style/StringHashKeys
26
29
  map "c" => :console
27
30
  map "s" => :server
28
- map "db:migrate:reset" => :migrate_reset
29
- map "db:migrate" => :migrate
30
- map "db:create_migration" => :create_migration
31
- map "db:add_column" => :add_column
32
- map "db:rename_column" => :rename_column
33
- map "db:change_column" => :change_column
34
- map "db:remove_column" => :remove_column
35
- map "db:drop_table" => :drop_table
36
- map "db:create" => :db_create
37
- map "db:seed" => :seed
31
+ map "g" => :generate
38
32
  map "t" => :test
39
33
  map ["-v", "--v", "--version", "-version"] => :version
40
34
  # rubocop:enable Style/StringHashKeys
data/lib/souls/index.rb CHANGED
@@ -1,8 +1,6 @@
1
1
  require "thor"
2
- require_relative "./api/index"
3
2
  require_relative "./cli/index"
4
3
  require_relative "./version"
5
- require_relative "./worker/index"
6
4
  require_relative "./utils/index"
7
5
 
8
6
  module Souls
data/lib/souls/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Souls
2
- VERSION = "0.60.0".freeze
2
+ VERSION = "0.61.0".freeze
3
3
  public_constant :VERSION
4
4
  end
@@ -1 +1 @@
1
- 0.39.0
1
+ 0.40.0
@@ -1 +1 @@
1
- 0.39.0
1
+ 0.40.0
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: souls
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.60.0
4
+ version: 0.61.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - POPPIN-FUMI
8
8
  - KishiTheMechanic
9
9
  - James Neve
10
- autorequire:
10
+ autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2021-09-26 00:00:00.000000000 Z
13
+ date: 2021-09-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -127,40 +127,6 @@ files:
127
127
  - README.md
128
128
  - exe/souls
129
129
  - lib/souls.rb
130
- - lib/souls/api/generate/application.rb
131
- - lib/souls/api/generate/connection.rb
132
- - lib/souls/api/generate/connection_rbs.rb
133
- - lib/souls/api/generate/edge.rb
134
- - lib/souls/api/generate/edge_rbs.rb
135
- - lib/souls/api/generate/index.rb
136
- - lib/souls/api/generate/manager.rb
137
- - lib/souls/api/generate/manager_rbs.rb
138
- - lib/souls/api/generate/model.rb
139
- - lib/souls/api/generate/model_rbs.rb
140
- - lib/souls/api/generate/mutation.rb
141
- - lib/souls/api/generate/mutation_rbs.rb
142
- - lib/souls/api/generate/policy.rb
143
- - lib/souls/api/generate/policy_rbs.rb
144
- - lib/souls/api/generate/query.rb
145
- - lib/souls/api/generate/query_rbs.rb
146
- - lib/souls/api/generate/resolver.rb
147
- - lib/souls/api/generate/resolver_rbs.rb
148
- - lib/souls/api/generate/rspec_factory.rb
149
- - lib/souls/api/generate/rspec_model.rb
150
- - lib/souls/api/generate/rspec_mutation.rb
151
- - lib/souls/api/generate/rspec_policy.rb
152
- - lib/souls/api/generate/rspec_query.rb
153
- - lib/souls/api/generate/rspec_resolver.rb
154
- - lib/souls/api/generate/type.rb
155
- - lib/souls/api/generate/type_rbs.rb
156
- - lib/souls/api/index.rb
157
- - lib/souls/api/update/index.rb
158
- - lib/souls/api/update/mutation.rb
159
- - lib/souls/api/update/resolver.rb
160
- - lib/souls/api/update/rspec_factory.rb
161
- - lib/souls/api/update/rspec_mutation.rb
162
- - lib/souls/api/update/rspec_resolver.rb
163
- - lib/souls/api/update/type.rb
164
130
  - lib/souls/cli.rb
165
131
  - lib/souls/cli/console/index.rb
166
132
  - lib/souls/cli/create/index.rb
@@ -174,6 +140,36 @@ files:
174
140
  - lib/souls/cli/gcloud/pubsub/topics.rb
175
141
  - lib/souls/cli/gcloud/run/index.rb
176
142
  - lib/souls/cli/gcloud/sql/index.rb
143
+ - lib/souls/cli/generate/application.rb
144
+ - lib/souls/cli/generate/connection.rb
145
+ - lib/souls/cli/generate/connection_rbs.rb
146
+ - lib/souls/cli/generate/edge.rb
147
+ - lib/souls/cli/generate/edge_rbs.rb
148
+ - lib/souls/cli/generate/index.rb
149
+ - lib/souls/cli/generate/job.rb
150
+ - lib/souls/cli/generate/job_rbs.rb
151
+ - lib/souls/cli/generate/manager.rb
152
+ - lib/souls/cli/generate/manager_rbs.rb
153
+ - lib/souls/cli/generate/model.rb
154
+ - lib/souls/cli/generate/model_rbs.rb
155
+ - lib/souls/cli/generate/mutation.rb
156
+ - lib/souls/cli/generate/mutation_rbs.rb
157
+ - lib/souls/cli/generate/policy.rb
158
+ - lib/souls/cli/generate/policy_rbs.rb
159
+ - lib/souls/cli/generate/query.rb
160
+ - lib/souls/cli/generate/query_rbs.rb
161
+ - lib/souls/cli/generate/resolver.rb
162
+ - lib/souls/cli/generate/resolver_rbs.rb
163
+ - lib/souls/cli/generate/rspec_factory.rb
164
+ - lib/souls/cli/generate/rspec_job.rb
165
+ - lib/souls/cli/generate/rspec_manager.rb
166
+ - lib/souls/cli/generate/rspec_model.rb
167
+ - lib/souls/cli/generate/rspec_mutation.rb
168
+ - lib/souls/cli/generate/rspec_policy.rb
169
+ - lib/souls/cli/generate/rspec_query.rb
170
+ - lib/souls/cli/generate/rspec_resolver.rb
171
+ - lib/souls/cli/generate/type.rb
172
+ - lib/souls/cli/generate/type_rbs.rb
177
173
  - lib/souls/cli/index.rb
178
174
  - lib/souls/cli/init/index.rb
179
175
  - lib/souls/cli/release/index.rb
@@ -183,6 +179,13 @@ files:
183
179
  - lib/souls/cli/sync/index.rb
184
180
  - lib/souls/cli/sync/model.rb
185
181
  - lib/souls/cli/sync/pubsub.rb
182
+ - lib/souls/cli/update/index.rb
183
+ - lib/souls/cli/update/mutation.rb
184
+ - lib/souls/cli/update/resolver.rb
185
+ - lib/souls/cli/update/rspec_factory.rb
186
+ - lib/souls/cli/update/rspec_mutation.rb
187
+ - lib/souls/cli/update/rspec_resolver.rb
188
+ - lib/souls/cli/update/type.rb
186
189
  - lib/souls/cli/upgrade/gemfile.rb
187
190
  - lib/souls/cli/upgrade/index.rb
188
191
  - lib/souls/index.rb
@@ -190,10 +193,6 @@ files:
190
193
  - lib/souls/version.rb
191
194
  - lib/souls/versions/.souls_api_version
192
195
  - lib/souls/versions/.souls_worker_version
193
- - lib/souls/worker/generate/index.rb
194
- - lib/souls/worker/generate/job.rb
195
- - lib/souls/worker/generate/job_rbs.rb
196
- - lib/souls/worker/index.rb
197
196
  homepage: https://souls.elsoul.nl
198
197
  licenses:
199
198
  - Apache-2.0
@@ -201,7 +200,7 @@ metadata:
201
200
  homepage_uri: https://souls.elsoul.nl
202
201
  source_code_uri: https://github.com/elsoul/souls
203
202
  changelog_uri: https://github.com/elsoul/souls
204
- post_install_message:
203
+ post_install_message:
205
204
  rdoc_options: []
206
205
  require_paths:
207
206
  - lib
@@ -217,7 +216,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
217
216
  version: '0'
218
217
  requirements: []
219
218
  rubygems_version: 3.2.22
220
- signing_key:
219
+ signing_key:
221
220
  specification_version: 4
222
221
  summary: SOULs はサーバーレスフルスタックフレームワークです。柔軟な Ruby GraphQL API と Worker はルーティングの必要がありません。
223
222
  クラウド環境への自動デプロイ、CI/CD ワークフローを標準装備。開発者がビジネスロジックに集中し、楽しくコードが書けるような環境を目指しています。
@@ -1,32 +0,0 @@
1
- module Souls
2
- class Generate < Thor
3
- desc "manager_rbs [CLASS_NAME]", "Generate SOULs Manager RBS Template"
4
- method_option :mutation, aliases: "--mutation", required: true, desc: "Mutation File Name"
5
- def manager_rbs(class_name)
6
- file_path = ""
7
- singularized_class_name = class_name.underscore.singularize
8
- file_dir = "./sig/api/app/graphql/mutations/managers/#{singularized_class_name}_manager"
9
- FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
10
- file_path = "#{file_dir}/#{options[:mutation]}.rbs"
11
- File.open(file_path, "w") do |f|
12
- f.write(<<~TEXT)
13
- module Mutations
14
- module Managers
15
- module #{singularized_class_name.camelize}Manager
16
- class #{singularized_class_name.camelize}Login
17
- def self.description: (String)-> untyped
18
- def self.argument: (untyped, untyped, untyped)-> untyped
19
- def self.field: (untyped, untyped, untyped)-> untyped
20
- end
21
- end
22
- end
23
- end
24
- TEXT
25
- puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
26
- end
27
- file_path
28
- rescue Thor::Error => e
29
- raise(Thor::Error, e)
30
- end
31
- end
32
- end
@@ -1,14 +0,0 @@
1
- require_relative "./generate/index"
2
- require_relative "./update/index"
3
- module Souls
4
- class API < Thor
5
- desc "generate [COMMAND]", "souls api generate Commands"
6
- subcommand "generate", Generate
7
-
8
- desc "update [COMMAND]", "souls api update Commands"
9
- subcommand "update", Update
10
- # rubocop:disable Style/StringHashKeys
11
- map "g" => :generate
12
- # rubocop:enable Style/StringHashKeys
13
- end
14
- end
@@ -1,2 +0,0 @@
1
- require_relative "./job"
2
- require_relative "./job_rbs"
@@ -1,12 +0,0 @@
1
- require_relative "./generate/index"
2
-
3
- module Souls
4
- class Worker < Thor
5
- desc "generate [COMMAND]", "souls worker generate Commands"
6
- subcommand "generate", Generate
7
-
8
- # rubocop:disable Style/StringHashKeys
9
- map "g" => :generate
10
- # rubocop:enable Style/StringHashKeys
11
- end
12
- end