Sha256: 033c7deb4ad7da37efd0c41ebd008736bbd456fe05f4a2ed6fe8da8c104c4a03

Contents?: true

Size: 1.74 KB

Versions: 53

Compression:

Stored size: 1.74 KB

Contents

module ForestLiana
  class StatsController < ForestLiana::ApplicationController
    if Rails::VERSION::MAJOR < 4
      before_filter :find_resource, except: [:get_with_live_query]
    else
      before_action :find_resource, except: [:get_with_live_query]
    end

    def get
      case params[:type].try(:downcase)
      when 'value'
        stat = ValueStatGetter.new(@resource, params)
      when 'pie'
        stat = PieStatGetter.new(@resource, params)
      when 'line'
        stat = LineStatGetter.new(@resource, params)
      end

      stat.perform
      if stat.record
        render json: serialize_model(stat.record), serializer: nil
      else
        render json: {status: 404}, status: :not_found, serializer: nil
      end
    end

    def get_with_live_query
      begin
        stat = QueryStatGetter.new(params)
        stat.perform

        if stat.record
          render json: serialize_model(stat.record), serializer: nil
        else
          render json: {status: 404}, status: :not_found, serializer: nil
        end
      rescue ForestLiana::Errors::LiveQueryError => error
        render json: { errors: [{ status: 422, detail: error.message }] },
          status: :unprocessable_entity, serializer: nil
      rescue => error
        FOREST_LOGGER.error "Live Query error: #{error.message}"
        render json: { errors: [{ status: 422, detail: error.message }] },
          status: :unprocessable_entity, serializer: nil
      end
    end

    private

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

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

Version data entries

53 entries across 53 versions & 1 rubygems

Version Path
forest_liana-3.0.0.pre.beta.5 app/controllers/forest_liana/stats_controller.rb
forest_liana-2.14.7 app/controllers/forest_liana/stats_controller.rb
forest_liana-3.0.0.pre.beta.3 app/controllers/forest_liana/stats_controller.rb
forest_liana-3.0.0.pre.beta.2 app/controllers/forest_liana/stats_controller.rb
forest_liana-3.0.0.pre.beta.1 app/controllers/forest_liana/stats_controller.rb
forest_liana-3.0.0.pre.beta.0 app/controllers/forest_liana/stats_controller.rb
forest_liana-2.14.6 app/controllers/forest_liana/stats_controller.rb
forest_liana-2.14.5 app/controllers/forest_liana/stats_controller.rb
forest_liana-2.14.4 app/controllers/forest_liana/stats_controller.rb
forest_liana-2.14.3 app/controllers/forest_liana/stats_controller.rb
forest_liana-2.14.2 app/controllers/forest_liana/stats_controller.rb
forest_liana-2.14.1 app/controllers/forest_liana/stats_controller.rb
forest_liana-2.14.0 app/controllers/forest_liana/stats_controller.rb
forest_liana-2.13.7 app/controllers/forest_liana/stats_controller.rb
forest_liana-2.13.6 app/controllers/forest_liana/stats_controller.rb
forest_liana-2.13.5 app/controllers/forest_liana/stats_controller.rb
forest_liana-2.13.4 app/controllers/forest_liana/stats_controller.rb
forest_liana-2.13.3 app/controllers/forest_liana/stats_controller.rb
forest_liana-2.13.2 app/controllers/forest_liana/stats_controller.rb
forest_liana-2.13.1 app/controllers/forest_liana/stats_controller.rb