Class: ApiMaker::CommandsController

Inherits:
BaseController
  • Object
show all
Defined in:
app/controllers/api_maker/commands_controller.rb

Instance Method Summary collapse

Instance Method Details

#createObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/controllers/api_maker/commands_controller.rb', line 4

def create
  command_response = ApiMaker::CommandResponse.new(controller: self)
  controller = self

  merged_params.fetch(:pool).each do |command_type, command_type_data|
    command_type_data.each do |resource_plural_name, command_model_data|
      command_model_data.each do |command_name, command_data|
        ApiMaker.const_get("#{command_type.camelize}CommandService").execute!(
          ability: current_ability,
          api_maker_args: api_maker_args,
          command_response: command_response,
          commands: command_data,
          command_name: command_name,
          controller: controller,
          resource_name: resource_plural_name
        )
      end
    end
  end

  command_response.join_threads

  render json: {responses: command_response.result}
end

#json_dataObject



33
34
35
# File 'app/controllers/api_maker/commands_controller.rb', line 33

def json_data
  @json_data ||= JSON.parse(params[:json]) if params[:json]
end

#json_paramsObject



29
30
31
# File 'app/controllers/api_maker/commands_controller.rb', line 29

def json_params
  @json_params ||= ActionController::Parameters.new(json_data) if json_data
end

#merged_paramsObject



37
38
39
40
41
42
43
44
45
46
47
# File 'app/controllers/api_maker/commands_controller.rb', line 37

def merged_params
  @merged_params ||= if json_data
    raw_data = params.permit!.to_h
    merged_data = ApiMaker::DeepMergeParams.execute!(json_data, raw_data)
    ActionController::Parameters.new(merged_data)
  elsif json_params
    json_params
  else
    params
  end
end