souls 0.60.2 → 0.61.2

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/lib/souls/cli/db/create_migration_rbs.rb +27 -0
  3. data/lib/souls/cli/db/index.rb +13 -12
  4. data/lib/souls/{api → cli}/generate/application.rb +48 -23
  5. data/lib/souls/{api → cli}/generate/connection.rb +0 -0
  6. data/lib/souls/{api → cli}/generate/connection_rbs.rb +0 -0
  7. data/lib/souls/{api → cli}/generate/edge.rb +0 -0
  8. data/lib/souls/{api → cli}/generate/edge_rbs.rb +0 -0
  9. data/lib/souls/{api → cli}/generate/index.rb +7 -2
  10. data/lib/souls/{worker → cli}/generate/job.rb +3 -2
  11. data/lib/souls/{worker → cli}/generate/job_rbs.rb +0 -0
  12. data/lib/souls/{api → cli}/generate/manager.rb +4 -2
  13. data/lib/souls/cli/generate/manager_rbs.rb +34 -0
  14. data/lib/souls/{api → cli}/generate/model.rb +0 -0
  15. data/lib/souls/{api → cli}/generate/model_rbs.rb +2 -4
  16. data/lib/souls/{api → cli}/generate/mutation.rb +43 -87
  17. data/lib/souls/{api → cli}/generate/mutation_rbs.rb +0 -0
  18. data/lib/souls/{api → cli}/generate/policy.rb +0 -0
  19. data/lib/souls/{api → cli}/generate/policy_rbs.rb +0 -0
  20. data/lib/souls/{api → cli}/generate/query.rb +0 -0
  21. data/lib/souls/{api → cli}/generate/query_rbs.rb +0 -0
  22. data/lib/souls/{api → cli}/generate/resolver.rb +0 -0
  23. data/lib/souls/{api → cli}/generate/resolver_rbs.rb +0 -3
  24. data/lib/souls/{api → cli}/generate/rspec_factory.rb +0 -0
  25. data/lib/souls/cli/generate/rspec_job.rb +48 -0
  26. data/lib/souls/cli/generate/rspec_manager.rb +49 -0
  27. data/lib/souls/{api → cli}/generate/rspec_model.rb +0 -0
  28. data/lib/souls/{api → cli}/generate/rspec_mutation.rb +0 -0
  29. data/lib/souls/{api → cli}/generate/rspec_policy.rb +0 -0
  30. data/lib/souls/{api → cli}/generate/rspec_query.rb +0 -0
  31. data/lib/souls/{api → cli}/generate/rspec_resolver.rb +0 -0
  32. data/lib/souls/{api → cli}/generate/type.rb +0 -0
  33. data/lib/souls/{api → cli}/generate/type_rbs.rb +0 -0
  34. data/lib/souls/cli/index.rb +2 -0
  35. data/lib/souls/cli/init/index.rb +1 -11
  36. data/lib/souls/{api → cli}/update/index.rb +0 -0
  37. data/lib/souls/{api → cli}/update/mutation.rb +0 -0
  38. data/lib/souls/{api → cli}/update/resolver.rb +0 -0
  39. data/lib/souls/{api → cli}/update/rspec_factory.rb +0 -0
  40. data/lib/souls/{api → cli}/update/rspec_mutation.rb +0 -0
  41. data/lib/souls/{api → cli}/update/rspec_resolver.rb +0 -0
  42. data/lib/souls/{api → cli}/update/type.rb +0 -0
  43. data/lib/souls/cli/upgrade/index.rb +1 -0
  44. data/lib/souls/cli/upgrade/submodule.rb +8 -0
  45. data/lib/souls/cli.rb +14 -20
  46. data/lib/souls/index.rb +0 -2
  47. data/lib/souls/version.rb +1 -1
  48. data/lib/souls/versions/.souls_api_version +1 -1
  49. data/lib/souls/versions/.souls_worker_version +1 -1
  50. metadata +41 -40
  51. data/lib/souls/api/generate/manager_rbs.rb +0 -32
  52. data/lib/souls/api/index.rb +0 -14
  53. data/lib/souls/worker/generate/index.rb +0 -2
  54. data/lib/souls/worker/index.rb +0 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9d2a12904fa0b9dd7fc558dcb8bff291ea14302fa9aa14cf87ade8092e27f6cc
4
- data.tar.gz: 9142fb468c45f4fd65930bba9f29f1c796c85a0d62c29059f3fc0184ba7c1956
3
+ metadata.gz: a395c41a097cf8773d3e19188976b3948e09a9736b157ce351a692ac1c9e5096
4
+ data.tar.gz: 20617090b1454ca2c6974aee63e4837a6ba31a71111304d745b72d08594e9d4a
5
5
  SHA512:
6
- metadata.gz: 2448ff57ad0c5e940994d81217de376f669d7a33fccf1c8fa0eb65f53a091e8ee0ca9a5aa29521596173554c820ac6584ed2d02071841c9709aca0a5e8781ebb
7
- data.tar.gz: ca45ef93f5db68edffec37f2dd5b915b4070d9ec8204342085da5c3c42a1544075c1b29cbeac3fb0682f9dd8e0971e9c0625d5f558e900223ea1c9163c309cee
6
+ metadata.gz: 6698f7dca334ddae16066fbd55675478fc5c215598ba5c39185e618ffc02929141043f0f1c3b106798426d13deef1f4324736402b3cac0d48e9c3a2522ec18ca
7
+ data.tar.gz: fc3411de2e75eed68d82897af363e399aeaaf9416e5187e9ff69ba8e754956152410574c2bef3f53e5066112e41d03f9a52c089dee1a18e836859f0ff0e033f6
@@ -0,0 +1,27 @@
1
+ module Souls
2
+ class DB < Thor
3
+ desc "create_migration_rbs [CLASS_NAME]", "Generate ActiveRecord Migration's RBS Template"
4
+ def create_migration_rbs(class_name)
5
+ file_path = ""
6
+ Dir.chdir(Souls.get_mother_path.to_s) do
7
+ file_dir = "./sig/api/db/migrate"
8
+ FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
9
+ pluralized_class_name = class_name.underscore.pluralize
10
+ file_path = "#{file_dir}/create_#{pluralized_class_name}.rbs"
11
+ File.open(file_path, "w") do |f|
12
+ f.write(<<~TEXT)
13
+ class Create#{pluralized_class_name.camelize}
14
+ def change: () -> untyped
15
+ def create_table: (:#{pluralized_class_name}) { (untyped) -> untyped } -> untyped
16
+ def add_index: (:#{pluralized_class_name}, *untyped) -> untyped
17
+ end
18
+ TEXT
19
+ end
20
+ puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
21
+ end
22
+ file_path
23
+ rescue Thor::Error => e
24
+ raise(Thor::Error, e)
25
+ end
26
+ end
27
+ end
@@ -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}")
@@ -75,11 +75,12 @@ module Souls
75
75
  end
76
76
  TEXT
77
77
  end
78
+ Souls::DB.new.invoke(:create_migration, [pluralized_class_name], {})
78
79
  rescue Thor::Error => e
79
80
  raise(Thor::Error, e)
80
81
  end
81
82
 
82
- desc "db:add_column [CLASS_NAME]", "Create ActiveRecord Migration File"
83
+ desc "add_column [CLASS_NAME]", "Create ActiveRecord Migration File"
83
84
  def add_column(class_name)
84
85
  pluralized_class_name = class_name.underscore.pluralize
85
86
  system("rake db:create_migration NAME=add_column_to_#{pluralized_class_name}")
@@ -87,7 +88,7 @@ module Souls
87
88
  raise(Thor::Error, e)
88
89
  end
89
90
 
90
- desc "db:rename_column [CLASS_NAME]", "Create ActiveRecord Migration File"
91
+ desc "rename_column [CLASS_NAME]", "Create ActiveRecord Migration File"
91
92
  def rename_column(class_name)
92
93
  pluralized_class_name = class_name.underscore.pluralize
93
94
  system("rake db:create_migration NAME=rename_column_to_#{pluralized_class_name}")
@@ -95,7 +96,7 @@ module Souls
95
96
  raise(Thor::Error, e)
96
97
  end
97
98
 
98
- desc "db:change_column [CLASS_NAME]", "Create ActiveRecord Migration File"
99
+ desc "change_column [CLASS_NAME]", "Create ActiveRecord Migration File"
99
100
  def change_column(class_name)
100
101
  pluralized_class_name = class_name.underscore.pluralize
101
102
  system("rake db:create_migration NAME=change_column_to_#{pluralized_class_name}")
@@ -103,7 +104,7 @@ module Souls
103
104
  raise(Thor::Error, e)
104
105
  end
105
106
 
106
- desc "db:remove_column [CLASS_NAME]", "Create ActiveRecord Migration File"
107
+ desc "remove_column [CLASS_NAME]", "Create ActiveRecord Migration File"
107
108
  def remove_column(class_name)
108
109
  pluralized_class_name = class_name.underscore.pluralize
109
110
  system("rake db:create_migration NAME=remove_column_to_#{pluralized_class_name}")
@@ -111,7 +112,7 @@ module Souls
111
112
  raise(Thor::Error, e)
112
113
  end
113
114
 
114
- desc "db:drop_table [CLASS_NAME]", "Create ActiveRecord Migration File"
115
+ desc "drop_table [CLASS_NAME]", "Create ActiveRecord Migration File"
115
116
  def drop_table(class_name)
116
117
  pluralized_class_name = class_name.underscore.pluralize
117
118
  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"
File without changes
@@ -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,20 +14,10 @@ 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
+ system("cd #{app_name} && git init --initial-branch=main")
18
18
  souls_api_credit(app_name: app_name, service_name: service_name)
19
19
  end
20
20
 
21
- desc "init", "Run git submodule add RBS collection"
22
- def add_submodule
23
- system("git submodule add https://github.com/ruby/gem_rbs_collection.git vendor/rbs/gem_rbs_collection")
24
- end
25
-
26
- desc "update_submodule", "Run git submodule update --init RBS collection"
27
- def update_submodule
28
- system("git submodule update --init https://github.com/ruby/gem_rbs_collection.git vendor/rbs/gem_rbs_collection")
29
- end
30
-
31
21
  private
32
22
 
33
23
  def get_version(repository_name: "souls_api")
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1 +1,2 @@
1
1
  require_relative "./gemfile"
2
+ require_relative "./submodule"
@@ -0,0 +1,8 @@
1
+ module Souls
2
+ class Upgrade < Thor
3
+ desc "submodule", "Run git submodule update --init RBS collection"
4
+ def submodule
5
+ system("git submodule update --init https://github.com/ruby/gem_rbs_collection.git vendor/rbs/gem_rbs_collection")
6
+ end
7
+ end
8
+ end
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 [COMMAND]", "SOULs Upgrade Commands"
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.2".freeze
2
+ VERSION = "0.61.2".freeze
3
3
  public_constant :VERSION
4
4
  end
@@ -1 +1 @@
1
- 0.39.2
1
+ 0.40.2
@@ -1 +1 @@
1
- 0.39.2
1
+ 0.40.2
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.60.2
4
+ version: 0.61.2
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-09-27 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,43 +127,10 @@ 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
133
+ - lib/souls/cli/db/create_migration_rbs.rb
167
134
  - lib/souls/cli/db/index.rb
168
135
  - lib/souls/cli/docker/index.rb
169
136
  - lib/souls/cli/gcloud/compute/index.rb
@@ -174,6 +141,36 @@ files:
174
141
  - lib/souls/cli/gcloud/pubsub/topics.rb
175
142
  - lib/souls/cli/gcloud/run/index.rb
176
143
  - lib/souls/cli/gcloud/sql/index.rb
144
+ - lib/souls/cli/generate/application.rb
145
+ - lib/souls/cli/generate/connection.rb
146
+ - lib/souls/cli/generate/connection_rbs.rb
147
+ - lib/souls/cli/generate/edge.rb
148
+ - lib/souls/cli/generate/edge_rbs.rb
149
+ - lib/souls/cli/generate/index.rb
150
+ - lib/souls/cli/generate/job.rb
151
+ - lib/souls/cli/generate/job_rbs.rb
152
+ - lib/souls/cli/generate/manager.rb
153
+ - lib/souls/cli/generate/manager_rbs.rb
154
+ - lib/souls/cli/generate/model.rb
155
+ - lib/souls/cli/generate/model_rbs.rb
156
+ - lib/souls/cli/generate/mutation.rb
157
+ - lib/souls/cli/generate/mutation_rbs.rb
158
+ - lib/souls/cli/generate/policy.rb
159
+ - lib/souls/cli/generate/policy_rbs.rb
160
+ - lib/souls/cli/generate/query.rb
161
+ - lib/souls/cli/generate/query_rbs.rb
162
+ - lib/souls/cli/generate/resolver.rb
163
+ - lib/souls/cli/generate/resolver_rbs.rb
164
+ - lib/souls/cli/generate/rspec_factory.rb
165
+ - lib/souls/cli/generate/rspec_job.rb
166
+ - lib/souls/cli/generate/rspec_manager.rb
167
+ - lib/souls/cli/generate/rspec_model.rb
168
+ - lib/souls/cli/generate/rspec_mutation.rb
169
+ - lib/souls/cli/generate/rspec_policy.rb
170
+ - lib/souls/cli/generate/rspec_query.rb
171
+ - lib/souls/cli/generate/rspec_resolver.rb
172
+ - lib/souls/cli/generate/type.rb
173
+ - lib/souls/cli/generate/type_rbs.rb
177
174
  - lib/souls/cli/index.rb
178
175
  - lib/souls/cli/init/index.rb
179
176
  - lib/souls/cli/release/index.rb
@@ -183,17 +180,21 @@ files:
183
180
  - lib/souls/cli/sync/index.rb
184
181
  - lib/souls/cli/sync/model.rb
185
182
  - lib/souls/cli/sync/pubsub.rb
183
+ - lib/souls/cli/update/index.rb
184
+ - lib/souls/cli/update/mutation.rb
185
+ - lib/souls/cli/update/resolver.rb
186
+ - lib/souls/cli/update/rspec_factory.rb
187
+ - lib/souls/cli/update/rspec_mutation.rb
188
+ - lib/souls/cli/update/rspec_resolver.rb
189
+ - lib/souls/cli/update/type.rb
186
190
  - lib/souls/cli/upgrade/gemfile.rb
187
191
  - lib/souls/cli/upgrade/index.rb
192
+ - lib/souls/cli/upgrade/submodule.rb
188
193
  - lib/souls/index.rb
189
194
  - lib/souls/utils/index.rb
190
195
  - lib/souls/version.rb
191
196
  - lib/souls/versions/.souls_api_version
192
197
  - 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
198
  homepage: https://souls.elsoul.nl
198
199
  licenses:
199
200
  - Apache-2.0
@@ -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