command_service_object 0.5.8 → 0.5.9
Sign up to get free protection for your applications and to get access to all the features.
- 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
|