Sha256: 78eb1ba73bdaee0324abe5c0d5b9c95450bc28db5b97f3324d2d045daef6d6a4

Contents?: true

Size: 1.71 KB

Versions: 18

Compression:

Stored size: 1.71 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]).perform
    end

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

  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
forest_liana-1.3.41 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.40 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.39 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.38 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.37 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.36 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.35 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.34 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.33 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.32 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.31 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.30 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.29 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.28 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.27 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.26 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.25 app/controllers/forest_liana/resources_controller.rb
forest_liana-1.3.24 app/controllers/forest_liana/resources_controller.rb