class EdgycircleToolbox::CQRS::CommandBuilder
Public Class Methods
new()
click to toggle source
# File lib/edgycircle_toolbox/cqrs/command_builder.rb, line 15 def initialize @command_container = Dry::Container.new @decorator_container = DecoratorContainer.new end
Public Instance Methods
build(valid_parameters, context = nil)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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