Sha256: 516294caec949138c8509eebd84c9d4eafe85a4c16a15bbfd25d87751d69d455

Contents?: true

Size: 745 Bytes

Versions: 3

Compression:

Stored size: 745 Bytes

Contents

# frozen_string_literal: true

require 'dry-auto_inject'
require 'spy_alley_application/injection_container'
require 'spy_alley_application/types/game_board'

module SpyAlleyApplication
  class ExecuteAction
    include Dry::AutoInject(SpyAlleyApplication::InjectionContainer)[
      :change_orders_initializer, :build_validator]

    def call(action_hash:, game_board:, user:, last_action_id:)
      game_board = SpyAlleyApplication::Types::GameBoard.call(game_board.to_h)
      validate = build_validator.(game_board: game_board, last_action_id: last_action_id)
      execute_action = validate.(action_hash: action_hash, user: user)
      execute_action.(game_board: game_board, change_orders: change_orders_initializer.())
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
spy_alley_application-0.3.2 lib/spy_alley_application/execute_action.rb
spy_alley_application-0.3.1 lib/spy_alley_application/execute_action.rb
spy_alley_application-0.3.0 lib/spy_alley_application/execute_action.rb