command_service_object 0.5.8 → 0.5.9
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 +1 -1
- data/README.md +4 -7
- data/lib/command_service_object/hooks.rb +20 -34
- data/lib/command_service_object/version.rb +1 -1
- data/lib/generators/service/install/templates/services/application_service.rb +1 -1
- data/lib/generators/service/{setter/setter_generator.rb → micro/micro_generator.rb} +7 -7
- data/lib/generators/service/{setter/templates/setter.rb.erb → micro/templates/micro.rb.erb} +2 -2
- data/lib/generators/service/setup/setup_generator.rb +1 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a606b537ff9e5fa48d83684b557cd77246678d2630651427df83249fd269e80c
|
4
|
+
data.tar.gz: f71943649f80df509d2b30bb4dc8ba71a6a5a8b8cac7b27be6ddb8262bdfd5e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7e1a379d4ede3ea8588d563f2e8eee63f5988f39271c4acf3177db9bbd294a13b2d8a0600ec6c4ecb424197018a38c4d9424657ed7784fc147050273636432d
|
7
|
+
data.tar.gz: c5529f024888239ad4431c1cfd6ae212fe0b14d46859bffa92953468d6e8a7e73ebb2316a9732d44b27735d593feaccd811a76179f00d6ffff58a0746d7aa75d
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -56,17 +56,15 @@ app/services/
|
|
56
56
|
│ └── usecases
|
57
57
|
│ ├── login.rb
|
58
58
|
│ ├── login.rb
|
59
|
-
│
|
60
|
-
│ └── setters
|
59
|
+
│ └── micros
|
61
60
|
│ └── user_profile_image.rb
|
62
61
|
├── case_base.rb
|
63
62
|
└── service_result.rb
|
64
63
|
```
|
65
64
|
|
66
|
-
### Generate
|
65
|
+
### Generate micros ex:
|
67
66
|
|
68
|
-
$ rails g service:
|
69
|
-
$ rails g service:getter auth user_balance
|
67
|
+
$ rails g service:micro auth user_profile_image
|
70
68
|
|
71
69
|
then you can edit command params
|
72
70
|
> you can read [Virtus gem docs](https://github.com/solnic/virtus) for more info.
|
@@ -97,8 +95,7 @@ and then add your business logic
|
|
97
95
|
module AuthService::Usecases
|
98
96
|
class Login < CaseBase
|
99
97
|
include CommandServiceObject::Hooks
|
100
|
-
|
101
|
-
getters :user_balance
|
98
|
+
micros :user_profile_image
|
102
99
|
#
|
103
100
|
# Your business logic goes here, keep [call] method clean by using private
|
104
101
|
# methods for Business logic.
|
@@ -9,22 +9,21 @@ module CommandServiceObject
|
|
9
9
|
|
10
10
|
define_method :new do |command|
|
11
11
|
_new(command).tap do |instance|
|
12
|
-
instance.send(:
|
13
|
-
instance.send(:setup_getters, _getters)
|
12
|
+
instance.send(:setup_micros, _micros)
|
14
13
|
end
|
15
14
|
end
|
16
15
|
end
|
17
16
|
end
|
18
17
|
|
19
18
|
module InstanceMethods
|
20
|
-
attr_accessor :
|
19
|
+
attr_accessor :_called_micros
|
21
20
|
|
22
|
-
def
|
23
|
-
@
|
21
|
+
def _called_micros
|
22
|
+
@_called_micros ||= []
|
24
23
|
end
|
25
24
|
|
26
|
-
def
|
27
|
-
|
25
|
+
def rollback_micros
|
26
|
+
_called_micross.reverse_each(&:rollback)
|
28
27
|
end
|
29
28
|
|
30
29
|
def setup_getters(getters)
|
@@ -37,21 +36,21 @@ module CommandServiceObject
|
|
37
36
|
end
|
38
37
|
end
|
39
38
|
|
40
|
-
def
|
41
|
-
|
42
|
-
method_name =
|
39
|
+
def setup_micros(micros)
|
40
|
+
micros.each do |micro|
|
41
|
+
method_name = micro.name.split('::').last.underscore
|
43
42
|
|
44
|
-
# unrollable
|
43
|
+
# unrollable micros
|
45
44
|
define_singleton_method("#{method_name}!") do |payload|
|
46
|
-
|
45
|
+
micro.new(payload).call
|
47
46
|
end
|
48
47
|
|
49
|
-
# rollable
|
48
|
+
# rollable micros
|
50
49
|
define_singleton_method(method_name) do |payload|
|
51
|
-
obj =
|
50
|
+
obj = micro.new(payload)
|
52
51
|
obj.call
|
53
52
|
|
54
|
-
|
53
|
+
_called_micros << obj
|
55
54
|
obj
|
56
55
|
end
|
57
56
|
end
|
@@ -59,31 +58,18 @@ module CommandServiceObject
|
|
59
58
|
end
|
60
59
|
|
61
60
|
module ClassMethods
|
62
|
-
cattr_accessor :
|
61
|
+
cattr_accessor :_micros
|
63
62
|
|
64
|
-
def
|
65
|
-
@
|
63
|
+
def _micros
|
64
|
+
@_micros ||= Set.new([])
|
66
65
|
end
|
67
66
|
|
68
|
-
def
|
69
|
-
@_getters ||= Set.new([])
|
70
|
-
end
|
71
|
-
|
72
|
-
def setters(*names)
|
73
|
-
service = to_s.split('::').first
|
74
|
-
|
75
|
-
names.each do |name|
|
76
|
-
obj = "#{service}/Usecases/Setters/#{name}".camelize.constantize
|
77
|
-
_setters.add(obj)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def getters(*names)
|
67
|
+
def micros(*names)
|
82
68
|
service = to_s.split('::').first
|
83
69
|
|
84
70
|
names.each do |name|
|
85
|
-
obj = "#{service}/Usecases/
|
86
|
-
|
71
|
+
obj = "#{service}/Usecases/Micros/#{name}".camelize.constantize
|
72
|
+
_micros.add(obj)
|
87
73
|
end
|
88
74
|
end
|
89
75
|
end
|
@@ -2,21 +2,21 @@ require_relative '../setup/setup_generator.rb'
|
|
2
2
|
|
3
3
|
module Service
|
4
4
|
module Generators
|
5
|
-
class
|
5
|
+
class MicroGenerator < Rails::Generators::NamedBase
|
6
6
|
source_root File.expand_path('templates', __dir__)
|
7
7
|
|
8
|
-
argument :
|
8
|
+
argument :micros, type: :array, default: [], banner: 'micros micros'
|
9
9
|
|
10
10
|
def setup
|
11
11
|
invoke Service::Generators::SetupGenerator, [name]
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
|
16
|
-
@
|
14
|
+
def create_micros
|
15
|
+
micros.each do |m|
|
16
|
+
@micro = m.classify
|
17
17
|
|
18
|
-
path = "app/services/#{service_name}/usecases/
|
19
|
-
template '
|
18
|
+
path = "app/services/#{service_name}/usecases/micros/#{m.underscore}.rb"
|
19
|
+
template 'micro.rb.erb', path
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
@@ -7,8 +7,7 @@ module Service
|
|
7
7
|
empty_directory("app/services/#{service_name}")
|
8
8
|
empty_directory("app/services/#{service_name}/usecases")
|
9
9
|
empty_directory("app/services/#{service_name}/commands")
|
10
|
-
empty_directory("app/services/#{service_name}/usecases/
|
11
|
-
empty_directory("app/services/#{service_name}/usecases/getters")
|
10
|
+
empty_directory("app/services/#{service_name}/usecases/micros")
|
12
11
|
end
|
13
12
|
|
14
13
|
private
|
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: 0.5.
|
4
|
+
version: 0.5.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adham EL-Deeb
|
@@ -164,9 +164,9 @@ files:
|
|
164
164
|
- lib/generators/service/install/templates/services/application_service.rb
|
165
165
|
- lib/generators/service/install/templates/services/case_base.rb
|
166
166
|
- lib/generators/service/install/templates/services/service_result.rb
|
167
|
+
- lib/generators/service/micro/micro_generator.rb
|
168
|
+
- lib/generators/service/micro/templates/micro.rb.erb
|
167
169
|
- lib/generators/service/service_generator.rb
|
168
|
-
- lib/generators/service/setter/setter_generator.rb
|
169
|
-
- lib/generators/service/setter/templates/setter.rb.erb
|
170
170
|
- lib/generators/service/setup/setup_generator.rb
|
171
171
|
- lib/generators/service/test/USAGE
|
172
172
|
- lib/generators/service/test/templates/minitest.rb.erb
|