command_service_object 1.4.0 → 1.4.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 +4 -4
- data/Gemfile.lock +2 -2
- data/lib/command_service_object/version.rb +1 -1
- data/lib/generators/service/command/templates/command_spec.rb.erb +3 -3
- data/lib/generators/service/external/templates/external_spec.rb.erb +1 -1
- data/lib/generators/service/install/templates/services/application_service.rb +24 -10
- data/lib/generators/service/install/templates/services/command_base.rb +2 -2
- data/lib/generators/service/install/templates/services/issuer.rb +10 -0
- data/lib/generators/service/install/templates/services/util/json.rb +7 -0
- data/lib/generators/service/usecase/templates/usecase_spec.rb.erb +4 -4
- metadata +5 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e58280d4d7d95c07974d99a7a0b9fdee2ba1b0dff5e3c757c82082a0be4d0384
|
|
4
|
+
data.tar.gz: 71d0e82c16cca76ed43149651c638cba4952ac4aa8265fd989f469c9920bee35
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d97e57b73f54c8d9b759f8917693d8b96cc22aec18f93d6f19f4e05cc0e5d8145d56ae180a6381ec3343c87ea6e14ad0d1d131e1277c3188a107ef6025113b5a
|
|
7
|
+
data.tar.gz: 5c2aff6a34ea6fdc6e42670afaba56096189fc968e2a8f2a20a131a98039792d4751480ba704d5bb3b15b00e209e7ee203616fe9abc4c912a7f77efd06a450e6
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
command_service_object (1.1
|
|
4
|
+
command_service_object (1.4.1)
|
|
5
5
|
hutch (~> 1.0)
|
|
6
6
|
virtus (~> 1.0, >= 1.0.5)
|
|
7
7
|
|
|
@@ -79,7 +79,7 @@ GEM
|
|
|
79
79
|
i18n (1.8.5)
|
|
80
80
|
concurrent-ruby (~> 1.0)
|
|
81
81
|
ice_nine (0.11.2)
|
|
82
|
-
json (2.
|
|
82
|
+
json (2.5.1)
|
|
83
83
|
loofah (2.7.0)
|
|
84
84
|
crass (~> 1.0.2)
|
|
85
85
|
nokogiri (>= 1.5.9)
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
require 'rails_helper'
|
|
4
4
|
|
|
5
|
-
describe <%= service_name.classify %>::Commands::<%= @
|
|
5
|
+
describe <%= service_name.classify %>::Commands::<%= @command %>, type: :model do
|
|
6
6
|
describe 'attrubites' do
|
|
7
|
-
it { expect(subject).to respond_to(:EX) }
|
|
7
|
+
<%# it { expect(subject).to respond_to(:EX) } %>
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
describe 'validatios' do
|
|
11
|
-
it { should validate_presence_of(:EX) }
|
|
11
|
+
<%# it { should validate_presence_of(:EX) } %>
|
|
12
12
|
end
|
|
13
13
|
end
|
|
@@ -7,33 +7,37 @@ class ApplicationService
|
|
|
7
7
|
def call(cmd)
|
|
8
8
|
@cmd = cmd
|
|
9
9
|
@bm = Benchmark.measure do
|
|
10
|
-
raise Errors::InvalidCommand
|
|
10
|
+
raise Errors::InvalidCommand if cmd.invalid?
|
|
11
11
|
|
|
12
12
|
@usecase = usecase_class.new(cmd)
|
|
13
|
-
|
|
13
|
+
|
|
14
|
+
raise Errors::NotAuthorizedError unless usecase.allowed?
|
|
14
15
|
|
|
15
16
|
@result = ServiceResult.new { usecase.call }
|
|
16
17
|
|
|
17
18
|
rollback if result.error.present?
|
|
19
|
+
usecase.broadcast if result.ok?
|
|
18
20
|
end
|
|
19
21
|
|
|
20
22
|
log_command
|
|
21
23
|
result
|
|
22
24
|
rescue StandardError => e
|
|
23
|
-
ServiceResult.new { raise e }
|
|
25
|
+
ServiceResult.new { raise e }
|
|
24
26
|
end
|
|
25
27
|
|
|
26
28
|
def rollback
|
|
27
29
|
usecase.rollback_micros
|
|
28
30
|
usecase.rollback
|
|
29
|
-
log_errors(result.error)
|
|
30
31
|
end
|
|
31
32
|
|
|
32
33
|
private
|
|
33
34
|
|
|
34
35
|
def log_command
|
|
35
|
-
|
|
36
|
-
service_logger
|
|
36
|
+
FileUtils.mkdir_p 'log/services'
|
|
37
|
+
service_logger = ActiveSupport::Logger.new(
|
|
38
|
+
Rails.root.join('log', 'services', "#{service_name.underscore}.log").to_s, 'daily'
|
|
39
|
+
)
|
|
40
|
+
service_logger.formatter = proc do |_severity, datetime, _progname, msg|
|
|
37
41
|
"[#{msg['usecase']}] [#{msg['status']}] [#{datetime.to_s(:db)} ##{Process.pid}] -- #{msg['body']}\n"
|
|
38
42
|
end
|
|
39
43
|
log_body = result.ok? ? success_log : failure_log
|
|
@@ -46,10 +50,10 @@ class ApplicationService
|
|
|
46
50
|
usecase: "#{service_name}::#{usecase_name}",
|
|
47
51
|
status: 'success',
|
|
48
52
|
body: {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
cmd: cmd.as_json,
|
|
54
|
+
result: result.value!.as_json,
|
|
55
|
+
benchmark: bm.as_json
|
|
56
|
+
}
|
|
53
57
|
}.as_json
|
|
54
58
|
end
|
|
55
59
|
|
|
@@ -78,3 +82,13 @@ class ApplicationService
|
|
|
78
82
|
end
|
|
79
83
|
end
|
|
80
84
|
end
|
|
85
|
+
|
|
86
|
+
module Errors
|
|
87
|
+
class NotAuthorizedError < StandardError
|
|
88
|
+
def initialize(msg: 'not allowd')
|
|
89
|
+
super(msg)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
class InvalidCommand < StandardError; end
|
|
94
|
+
end
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
class CommandBase
|
|
4
4
|
include ActiveModel::Validations
|
|
5
|
-
include Virtus.model
|
|
5
|
+
include Virtus.model
|
|
6
6
|
|
|
7
7
|
# if you need to enable policies add issuer attribute
|
|
8
|
-
attribute :issuer,
|
|
8
|
+
attribute :issuer, Issuer, default: :default_issuer
|
|
9
9
|
|
|
10
10
|
private
|
|
11
11
|
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
require 'rails_helper'
|
|
4
4
|
|
|
5
|
-
describe <%= service_name.classify %>::Usecases::<%= @
|
|
6
|
-
let(:cmd) { <%= service_name.classify %>::Commands::<%= @
|
|
5
|
+
describe <%= service_name.classify %>::Usecases::<%= @usecase %> do
|
|
6
|
+
let(:cmd) { <%= service_name.classify %>::Commands::<%= @usecase %>.new(cmd_params) }
|
|
7
7
|
let(:cmd_default_params) {{ name: 'test_name' }}
|
|
8
8
|
|
|
9
|
-
context
|
|
10
|
-
let(:cmd_params) { cmd_default_params
|
|
9
|
+
context 'when success' do
|
|
10
|
+
let(:cmd_params) { cmd_default_params }
|
|
11
11
|
let!(:result) { ApplicationService.call(cmd) }
|
|
12
12
|
|
|
13
13
|
it 'should be okay?' do
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: command_service_object
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.4.
|
|
4
|
+
version: 1.4.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Adham EL-Deeb
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: exe
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2021-01-19 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: bundler
|
|
@@ -187,9 +187,11 @@ files:
|
|
|
187
187
|
- lib/generators/service/install/templates/services/application_service.rb
|
|
188
188
|
- lib/generators/service/install/templates/services/case_base.rb
|
|
189
189
|
- lib/generators/service/install/templates/services/command_base.rb
|
|
190
|
+
- lib/generators/service/install/templates/services/issuer.rb
|
|
190
191
|
- lib/generators/service/install/templates/services/listener_base.rb
|
|
191
192
|
- lib/generators/service/install/templates/services/query_base.rb
|
|
192
193
|
- lib/generators/service/install/templates/services/service_result.rb
|
|
194
|
+
- lib/generators/service/install/templates/services/util/json.rb
|
|
193
195
|
- lib/generators/service/install/templates/services/value_object_base.rb
|
|
194
196
|
- lib/generators/service/listener/listener_generator.rb
|
|
195
197
|
- lib/generators/service/listener/templates/listener.rb.erb
|
|
@@ -230,7 +232,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
230
232
|
- !ruby/object:Gem::Version
|
|
231
233
|
version: '0'
|
|
232
234
|
requirements: []
|
|
233
|
-
rubygems_version: 3.1.
|
|
235
|
+
rubygems_version: 3.1.4
|
|
234
236
|
signing_key:
|
|
235
237
|
specification_version: 4
|
|
236
238
|
summary: Rails Generator for command service object.
|