Sha256: 4797f91d5fed22d1029b5f94d2bc614026e8b6753a8d7350caad82e93b443af5

Contents?: true

Size: 1.04 KB

Versions: 34

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

module Motor
  class RunQueriesController < ApiBaseController
    wrap_parameters :data

    load_and_authorize_resource :query, only: :show, parent: false

    before_action :build_query, only: :create
    authorize_resource :query, only: :create

    rescue_from 'ActiveRecord::StatementInvalid' do |e|
      render json: { errors: [{ detail: e.message }] }, status: :unprocessable_entity
    end

    def show
      render json: query_result_hash(query_result)
    end

    def create
      render json: query_result_hash(query_result)
    end

    private

    def query_result
      Queries::RunQuery.call(@query, variables_hash: params[:variables])
    end

    def query_result_hash(query_result)
      {
        data: query_result.data,
        meta: {
          columns: query_result.columns
        }
      }
    end

    def build_query
      @query = Motor::Queries::Persistance.build_from_params(query_params)
    end

    def query_params
      params.require(:data).permit(:sql_body, preferences: {})
    end
  end
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
motor-admin-0.1.52 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.51 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.50 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.49 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.48 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.47 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.46 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.44 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.43 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.42 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.41 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.40 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.39 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.37 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.36 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.35 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.34 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.33 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.32 app/controllers/motor/run_queries_controller.rb
motor-admin-0.1.31 app/controllers/motor/run_queries_controller.rb