module Aepic::Concerns::ApiController::ClassMethods

Public Instance Methods

create() click to toggle source
Calls superclass method
# File lib/aepic/concerns/api_controller.rb, line 68
def create
  super
end
destroy() click to toggle source
Calls superclass method
# File lib/aepic/concerns/api_controller.rb, line 82
def destroy
  super
end
has_api!() { || ... } click to toggle source
# File lib/aepic/concerns/api_controller.rb, line 17
def has_api!
  human_name = resource_class.model_name.human
  param_group_id = "#{resource_class.model_name.singular}_id".to_sym
  param_group_resource = resource_class.model_name.singular.to_sym
  param_group_id_resource = "#{resource_class.model_name.singular}_resource".to_sym

  resource_description do
    formats ['json']
    error 404, 'Missing'
    error 500, 'Server crashed for some reason'
  end

  if block_given?
    yield
  else
    def_param_group(param_group_id) do
      param :id, Integer, "ID of #{human_name}"
    end
    columns = resource_class.columns_hash
    def_param_group(param_group_resource) do
      param param_group_resource, Hash, action_aware: true do
        columns.each do |name, column|
          param name.to_sym, column.sql_type.classify.safe_constantize || String, required: !column.null unless name == 'id'
          # STDERR.puts "params :#{name}, #{column.sql_type.classify.safe_constantize || String}"
        end
      end
    end
    def_param_group(param_group_id_resource) do
      param_group(param_group_id)
      param_group(param_group_resource)
    end
  end

  class_eval do
    api! "List #{human_name.pluralize}"
    formats %w(json jsonld)

    def index
      super
    end

    api! "Show #{human_name}"
    param_group(param_group_id)

    def show
      super
    end

    api! "Create #{human_name}"
    param_group(param_group_resource)

    def create
      super
    end

    api! "Update #{human_name}"
    param_group(param_group_id_resource)

    def update
      super
    end

    api! "Delete #{human_name}"
    param_group(param_group_id)

    def destroy
      super
    end
  end
end
index() click to toggle source
Calls superclass method
# File lib/aepic/concerns/api_controller.rb, line 54
def index
  super
end
show() click to toggle source
Calls superclass method
# File lib/aepic/concerns/api_controller.rb, line 61
def show
  super
end
update() click to toggle source
Calls superclass method
# File lib/aepic/concerns/api_controller.rb, line 75
def update
  super
end