Class: EdgycircleToolbox::CQRS::CommandBuilder
- Inherits:
-
Object
- Object
- EdgycircleToolbox::CQRS::CommandBuilder
show all
- Defined in:
- lib/edgycircle_toolbox/cqrs/command_builder.rb
Defined Under Namespace
Classes: DecoratorContainer
Instance Method Summary
collapse
Constructor Details
Returns a new instance of CommandBuilder.
15
16
17
18
|
# File 'lib/edgycircle_toolbox/cqrs/command_builder.rb', line 15
def initialize
@command_container = Dry::Container.new
@decorator_container = DecoratorContainer.new
end
|
Instance Method Details
#build(valid_parameters, context = nil) ⇒ Object
29
30
31
32
33
34
|
# File 'lib/edgycircle_toolbox/cqrs/command_builder.rb', line 29
def build(valid_parameters, context = nil)
command_class = @command_container.resolve(valid_parameters[:name])
decorator_classes = @decorator_container.resolve(command_class)
command = command_class.new(valid_parameters)
decorator_classes.inject(command) { |command, decorator_class| decorator_class.new(command, context) }
end
|
#decorate(command_class, decorator_class) ⇒ Object
25
26
27
|
# File 'lib/edgycircle_toolbox/cqrs/command_builder.rb', line 25
def decorate(command_class, decorator_class)
@decorator_container.register(command_class, decorator_class)
end
|
#register(command_class) ⇒ Object
20
21
22
23
|
# File 'lib/edgycircle_toolbox/cqrs/command_builder.rb', line 20
def register(command_class)
key = command_class.name.split("::").last.gsub("Command", "")
@command_container.register(key, command_class)
end
|
#validate(original_parameters) ⇒ Object
36
37
38
39
|
# File 'lib/edgycircle_toolbox/cqrs/command_builder.rb', line 36
def validate(original_parameters)
command_class = @command_container.resolve(original_parameters[:name])
command_class.schema.call(original_parameters)
end
|