souls 0.63.4 → 0.64.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8579c9811adaa3970cceee58fc6f42f08e39b67f2b8c485cf23f0cce19934a86
4
- data.tar.gz: 5fa60609ce4a0c07a1a0957f14f754717c148df61771a85a1cf7589b073f17ea
3
+ metadata.gz: 891bf32f8bcc0e14cf14d11f386a8c472c543e4a0ffc549fe3b47b81b980ed54
4
+ data.tar.gz: 28c968cce183e3349f22bcf410245125e39d4e70bc5c0bdfb7206ba388d3f66e
5
5
  SHA512:
6
- metadata.gz: a29e3d77f284109d336cdbd94456ab89125bdc53e7e273e84b42eb425cae30447b078e5fcb4bd5252d169a5d995b88ea7ffc0cc00eaf8dbce90812da94f251d7
7
- data.tar.gz: 68616b0988def074c59e81bdf73844e688286fa0521f34573185021fc70334f1b94ec9636d6610ffb2d9622d3e1ecc75bf5b457c092909aa0ea684539f226d2d
6
+ metadata.gz: 3667c55800d88ca69d08e9b66d1fccf0e75baa445a18d8a565526bbd1a155a5a9a6c749940ef79bfeb7cefcfbff50e9ba91b40ea25d5386573cb307292cc2031
7
+ data.tar.gz: 3322363d4d7c664d04b13f964a4ce1b5a6a8f0576454be6c5ab755abdbc4c24099db65f404c152436b5ce6e36d5f8f2e86338f572f4fc9c2c2d12ec7ad9a1177
data/README.md CHANGED
@@ -21,17 +21,12 @@
21
21
 
22
22
  Welcome to SOULs Serverless Application Framework!
23
23
 
24
- SOULs はサーバーレスフルスタックフレームワークです。柔軟な Ruby GraphQL API Worker はルーティングの必要がありません。
25
- クラウド環境への自動デプロイ、CI/CD ワークフローを標準装備。開発者がビジネスロジックに集中し、楽しくコードが書けるような環境を目指しています。
24
+ - Focus on business logic in serverless environment
25
+ - Maximize development efficiency with CI / CD standard schema-driven Scaffold
26
+ - Achieve global scale with lower management costs
26
27
 
27
- SOULs バックエンドには `API` と `Worker` の 2 つのタイプがあります。
28
- `API` は主にデータをフロントエンドへ提供します。`Worker` は主に `タスク` の処理を行います
28
+ ![画像](https://souls.elsoul.nl/imgs/docs/SOULs-architecture.jpg)
29
29
 
30
- ![画像](https://souls.elsoul.nl/imgs/docs/SOULs.jpg)
31
-
32
- 現在のバージョンでは SOULs `API` と `Worker` を Github Actions を使って Google Cloud Run へそれぞれデプロイします。
33
-
34
- SOULs フレームワークでは [Monorepo](https://en.wikipedia.org/wiki/Monorepo) によって一つのパッケージでアプリケーションを管理します。
35
30
 
36
31
  SOULs creates 2 types of framework.
37
32
 
@@ -79,41 +74,15 @@ And Create Your APP
79
74
 
80
75
  $ souls new app_name
81
76
  $ cd apps/api/app_name
82
- $ bundle
83
77
  $ souls s
84
78
 
85
79
  Check your GraphQL PlayGround
86
80
 
87
81
  [localhost:4000/playground](localhost:4000/playground)
88
82
 
89
- ## Gemfile 自動更新アップデート
90
-
91
- `Gemfile`, `Gemfile.lock` を最新のバージョンに自動更新します。
92
-
93
- ```
94
- souls upgrade gemfile
95
- ```
96
-
97
- 除外したい `gem` は `config/souls.rb` 内の
98
- `config.fixed_gems` の配列に追加します。
99
-
100
- ```ruby
101
- Souls.configure do |config|
102
- config.app = "souls-api"
103
- config.project_id = "souls-api"
104
- config.region = "asia-northeast1"
105
- config.endpoint = "/endpoint"
106
- config.strain = "api"
107
- config.fixed_gems = ["selenium-webdriver"]
108
- config.workers = []
109
- end
110
- ```
111
83
 
112
84
  ## SOULs Serverless Application Framework Document
113
85
 
114
- SOULs サーバーレスアプリケーションフレームワーク
115
- ドキュメントはこちらから
116
-
117
86
  - [SOULs Document](https://souls.elsoul.nl/)
118
87
 
119
88
  ## Development
@@ -3,17 +3,18 @@ module Souls
3
3
  desc "mutation [CLASS_NAME]", "Generate GraphQL Mutation from schema.rb"
4
4
  def mutation(class_name)
5
5
  singularized_class_name = class_name.singularize
6
- file_dir = "./app/graphql/mutations/base"
7
- FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
8
- file_path = "./app/graphql/mutations/base/#{singularized_class_name}/create_#{singularized_class_name}.rb"
9
- return "Mutation already exist! #{file_path}" if File.exist?(file_path)
10
6
 
11
- create_mutation(class_name: singularized_class_name)
12
- update_mutation(class_name: singularized_class_name)
13
- delete_mutation(class_name: singularized_class_name)
14
- destroy_delete_mutation(class_name: singularized_class_name)
15
- puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
16
- file_path
7
+ Dir.chdir(Souls.get_api_path.to_s) do
8
+ file_dir = "./app/graphql/mutations/base"
9
+ FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
10
+ file_path = "./app/graphql/mutations/base/#{singularized_class_name}/create_#{singularized_class_name}.rb"
11
+ return "Mutation already exist! #{file_path}" if File.exist?(file_path)
12
+
13
+ create_mutation(class_name: singularized_class_name)
14
+ update_mutation(class_name: singularized_class_name)
15
+ delete_mutation(class_name: singularized_class_name)
16
+ destroy_delete_mutation(class_name: singularized_class_name)
17
+ end
17
18
  rescue Thor::Error => e
18
19
  raise(Thor::Error, e)
19
20
  end
@@ -21,64 +22,77 @@ module Souls
21
22
  private
22
23
 
23
24
  def create_mutation(class_name: "user")
24
- file_path = ""
25
25
  singularized_class_name = class_name.singularize.underscore
26
- Dir.chdir(Souls.get_api_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"
26
+ file_dir = "./app/graphql/mutations/base/#{singularized_class_name}"
27
+ FileUtils.mkdir_p(file_dir) unless Dir.exist?(file_dir)
28
+ file_path = "#{file_dir}/create_#{singularized_class_name}.rb"
29
+ raise(Thor::Error, "Mutation RBS already exist! #{file_path}") if File.exist?(file_path)
49
30
 
50
- f.write(" #{col[:column_name]} = SoulsApiSchema.from_global_id(args[:#{col[:column_name]}])\n")
51
- end
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")
31
+ params = Souls.get_relation_params(class_name: singularized_class_name, col: "mutation")
32
+ File.open(file_path, "w") do |f|
33
+ f.write(<<~TEXT)
34
+ module Mutations
35
+ module Base::#{singularized_class_name.camelize}
36
+ class Create#{singularized_class_name.camelize} < BaseMutation
37
+ field :#{singularized_class_name}_edge, Types::#{singularized_class_name.camelize}Type.edge_type, null: false
38
+ field :error, String, null: true
39
+
40
+ TEXT
41
+ end
42
+
43
+ File.open(file_path, "a") do |f|
44
+ params[:params].each_with_index do |param, i|
45
+ type = Souls.type_check(param[:type])
46
+ type = "[#{type}]" if param[:array]
47
+ if i == params[:params].size - 1
48
+ f.write(" argument :#{param[:column_name]}, #{type}, null: true\n\n")
49
+ f.write(" def resolve(args)\n")
58
50
  else
59
- f.write(" data = ::#{singularized_class_name.camelize}.new(args)\n")
51
+ f.write(" argument :#{param[:column_name]}, #{type}, null: true\n")
60
52
  end
61
53
  end
62
- File.open(file_path, "a") do |new_line|
63
- new_line.write(<<~TEXT)
64
- raise(StandardError, data.errors.full_messages) unless data.save
54
+ end
55
+
56
+ File.open(file_path, "a") do |f|
57
+ if params[:relation_params]
58
+ f.write(" user_id = context[:user][:id]\n") if params[:user_exist]
59
+ params[:relation_params].each_with_index do |col, _i|
60
+ next if col[:column_name] == "user_id"
65
61
 
66
- { #{singularized_class_name}_edge: { node: data } }
67
- rescue StandardError => error
68
- GraphQL::ExecutionError.new(error.message)
69
- end
62
+ f.write(" #{col[:column_name]} = SoulsApiSchema.from_global_id(args[:#{col[:column_name]}])\n")
63
+ end
64
+ relation_params =
65
+ params[:relation_params].map do |n|
66
+ ", #{n[:column_name]}: #{n[:column_name]}"
67
+ end
68
+ f.write(" new_record = { **args #{relation_params.compact.join} }\n")
69
+ f.write(" data = ::#{singularized_class_name.camelize}.new(new_record)\n")
70
+ else
71
+ f.write(" data = ::#{singularized_class_name.camelize}.new(args)\n")
72
+ end
73
+ end
74
+ File.open(file_path, "a") do |new_line|
75
+ new_line.write(<<~TEXT)
76
+ raise(StandardError, data.errors.full_messages) unless data.save
77
+
78
+ { #{singularized_class_name}_edge: { node: data } }
79
+ rescue StandardError => error
80
+ GraphQL::ExecutionError.new(error.message)
70
81
  end
71
82
  end
72
83
  end
73
- TEXT
74
- end
84
+ end
85
+ TEXT
75
86
  end
87
+ puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
76
88
  file_path
77
89
  end
78
90
 
79
91
  ## 2.Mutation - Update
80
92
  def update_mutation_head(class_name: "user")
81
- file_path = "./app/graphql/mutations/base/#{class_name}/update_#{class_name}.rb"
93
+ singularized_class_name = class_name.singularize.underscore
94
+ file_dir = "./app/graphql/mutations/base/#{singularized_class_name}"
95
+ file_path = "#{file_dir}/update_#{class_name}.rb"
82
96
  File.open(file_path, "w") do |new_line|
83
97
  new_line.write(<<~TEXT)
84
98
  module Mutations
@@ -170,6 +184,7 @@ module Souls
170
184
  end
171
185
  TEXT
172
186
  end
187
+ puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
173
188
  file_path
174
189
  end
175
190
 
@@ -209,6 +224,7 @@ module Souls
209
224
  end
210
225
  TEXT
211
226
  end
227
+ puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
212
228
  file_path
213
229
  end
214
230
 
@@ -238,6 +254,7 @@ module Souls
238
254
  end
239
255
  TEXT
240
256
  end
257
+ puts(Paint % ["Created file! : %{white_text}", :green, { white_text: [file_path.to_s, :white] }])
241
258
  file_path
242
259
  rescue StandardError => e
243
260
  puts(e)
data/lib/souls/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Souls
2
- VERSION = "0.63.4".freeze
2
+ VERSION = "0.64.1".freeze
3
3
  public_constant :VERSION
4
4
  end
@@ -1 +1 @@
1
- 0.42.4
1
+ 0.43.1
@@ -1 +1 @@
1
- 0.42.4
1
+ 0.43.1
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.63.4
4
+ version: 0.64.1
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-30 00:00:00.000000000 Z
13
+ date: 2021-10-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -111,8 +111,13 @@ dependencies:
111
111
  - !ruby/object:Gem::Version
112
112
  version: 1.1.0
113
113
  description: |-
114
- SOULs はサーバーレスフルスタックフレームワークです。柔軟な Ruby GraphQL API と Worker はルーティングの必要がありません。
115
- クラウド環境への自動デプロイ、CI/CD ワークフローを標準装備。開発者がビジネスロジックに集中し、楽しくコードが書けるような環境を目指しています。
114
+ Welcome to SOULs Serverless Application Framework!
115
+
116
+ - Focus on business logic in serverless environment
117
+
118
+ - Maximize development efficiency with CI / CD standard schema-driven Scaffold
119
+
120
+ - Achieve global scale with lower management costs
116
121
  email:
117
122
  - f.kawasaki@elsoul.nl
118
123
  - s.kishi@elsoul.nl
@@ -220,6 +225,7 @@ requirements: []
220
225
  rubygems_version: 3.2.22
221
226
  signing_key:
222
227
  specification_version: 4
223
- summary: SOULs はサーバーレスフルスタックフレームワークです。柔軟な Ruby GraphQL API Worker はルーティングの必要がありません。
224
- クラウド環境への自動デプロイ、CI/CD ワークフローを標準装備。開発者がビジネスロジックに集中し、楽しくコードが書けるような環境を目指しています。
228
+ summary: Welcome to SOULs Serverless Application Framework! - Focus on business logic
229
+ in serverless environment - Maximize development efficiency with CI / CD standard
230
+ schema-driven Scaffold - Achieve global scale with lower management costs
225
231
  test_files: []