class PowerApi::ControllerGenerator

Public Class Methods

valid_actions() click to toggle source
# File lib/generators/power_api/controller/controller_generator.rb, line 4
def self.valid_actions
  PowerApi::GeneratorHelpers::PERMITTED_ACTIONS
end

Public Instance Methods

add_routes() click to toggle source
# File lib/generators/power_api/controller/controller_generator.rb, line 75
def add_routes
  if helper.parent_resource?
    if helper.resource_actions?
      add_normal_route(actions: helper.controller_actions & ["show", "update", "destroy"])
    end
    add_nested_route if helper.collection_actions?
  else
    add_normal_route(actions: helper.controller_actions)
  end

  helper.format_ruby_file(helper.routes_path)
end
configure_swagger() click to toggle source
# File lib/generators/power_api/controller/controller_generator.rb, line 97
def configure_swagger
  create_file(
    helper.swagger_resource_schema_path,
    helper.swagger_schema_tpl
  )

  helper.format_ruby_file(helper.swagger_resource_schema_path)

  insert_into_file(
    helper.swagger_version_definition_path,
    helper.swagger_definition_entry,
    after: helper.swagger_definition_line_to_inject_schema
  )

  create_file(
    helper.swagger_resource_spec_path,
    helper.swagger_resource_spec_tpl
  )

  helper.format_ruby_file(helper.swagger_resource_spec_path)
end
create_controller() click to toggle source
# File lib/generators/power_api/controller/controller_generator.rb, line 66
def create_controller
  create_file(
    helper.resource_controller_path,
    helper.resource_controller_tpl
  )

  helper.format_ruby_file(helper.resource_controller_path)
end
create_serializer() click to toggle source
# File lib/generators/power_api/controller/controller_generator.rb, line 88
def create_serializer
  create_file(
    helper.ams_serializer_path,
    helper.ams_serializer_tpl
  )

  helper.format_ruby_file(helper.ams_serializer_path)
end

Private Instance Methods

add_nested_parent_route() click to toggle source
# File lib/generators/power_api/controller/controller_generator.rb, line 144
def add_nested_parent_route
  add_route(helper.api_version_routes_line_regex) do |match|
    "#{match}\n#{helper.resource_route_tpl(is_parent: true)}"
  end
end
add_nested_route() click to toggle source
# File lib/generators/power_api/controller/controller_generator.rb, line 121
def add_nested_route
  line_to_replace = helper.parent_resource_routes_line_regex
  nested_resource_line = helper.resource_route_tpl(
    actions: helper.controller_actions & ['index', 'create']
  )
  add_nested_parent_route unless helper.parent_route_exist?

  if helper.parent_route_already_have_children?
    add_route(line_to_replace) { |match| "#{match}\n#{nested_resource_line}" }
  else
    add_route(line_to_replace) do |match|
      "#{match.delete_suffix('\n')} do\n#{nested_resource_line}\nend\n"
    end
  end
end
add_normal_route(actions:) click to toggle source
# File lib/generators/power_api/controller/controller_generator.rb, line 137
def add_normal_route(actions:)
  actions_for_only_option = actions.sort == self.class.valid_actions.sort ? [] : actions
  add_route(helper.api_version_routes_line_regex) do |match|
    "#{match}\n#{helper.resource_route_tpl(actions: actions_for_only_option)}"
  end
end
add_route(line_to_replace, &block) click to toggle source
# File lib/generators/power_api/controller/controller_generator.rb, line 150
def add_route(line_to_replace, &block)
  gsub_file helper.routes_path, line_to_replace do |match|
    block.call(match)
  end
end
helper() click to toggle source
# File lib/generators/power_api/controller/controller_generator.rb, line 156
def helper
  @helper ||= PowerApi::GeneratorHelpers.new(
    version_number: options[:version_number],
    resource: file_name,
    authenticated_resource: options[:authenticate_with],
    parent_resource: options[:parent_resource],
    owned_by_authenticated_resource: options[:owned_by_authenticated_resource],
    resource_attributes: options[:attributes],
    controller_actions: options[:controller_actions],
    use_paginator: options[:use_paginator],
    allow_filters: options[:allow_filters]
  )
end