Sha256: db839b4b5e0541e637d41bf806efefebf1d363168b0820733cfeae4626bc2d94

Contents?: true

Size: 1.72 KB

Versions: 1

Compression:

Stored size: 1.72 KB

Contents

module ForestLiana
  class ResourcesController < ForestLiana::ApplicationController
    begin
      prepend ResourcesExtensions
    rescue NameError
    end

    before_filter :find_resource

    def index
      getter = ResourcesGetter.new(@resource, params)
      getter.perform

      render serializer: nil, json: serialize_models(getter.records,
                                                     include: includes,
                                                     count: getter.count,
                                                     params: params)
    end

    def show
      getter = ResourceGetter.new(@resource, params)
      getter.perform

      render serializer: nil, json:
        serialize_model(getter.record, include: includes)
    end

    def create
      getter = ResourceCreator.new(@resource, params)
      getter.perform

      render serializer: nil,
        json: serialize_model(getter.record, include: includes)
    end

    def update
      getter = ResourceUpdater.new(@resource, params)
      getter.perform

      render serializer: nil,
        json: serialize_model(getter.record, include: includes)
    end

    def destroy
      @resource.destroy_all(id: params[:id])

      render nothing: true, status: 204
    end

    private

    def find_resource
      @resource = SchemaUtils.find_model_from_table_name(params[:collection])

      if @resource.nil? || !@resource.ancestors.include?(ActiveRecord::Base)
        render serializer: nil, json: {status: 404}, status: :not_found
      end
    end

    def resource_params
      ResourceDeserializer.new(@resource, params[:resource], true).perform
    end

    def includes
      SchemaUtils.one_associations(@resource).map {|a| a.name.to_s}
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
forest_liana-1.3.42 app/controllers/forest_liana/resources_controller.rb