Sha256: 97206498f1c14151589cd4ee3303310bc129a57aab1d944f331195f3f76cc92d

Contents?: true

Size: 1.57 KB

Versions: 21

Compression:

Stored size: 1.57 KB

Contents

# frozen_string_literal: true

module Motor
  class FormsController < ApiBaseController
    wrap_parameters :data, except: %i[include fields]

    load_and_authorize_resource :form, only: %i[index show update destroy]

    before_action :build_form, only: :create
    authorize_resource :form, only: :create

    def index
      render json: { data: Motor::ApiQuery::BuildJson.call(@forms.active, params) }
    end

    def show
      render json: { data: Motor::ApiQuery::BuildJson.call(@form, params) }
    end

    def create
      if Motor::Forms::Persistance.name_already_exists?(@form)
        render json: { errors: [{ source: 'name', detail: 'Name already exists' }] }, status: :unprocessable_entity
      else
        ApplicationRecord.transaction { @form.save! }

        render json: { data: Motor::ApiQuery::BuildJson.call(@form, params) }
      end
    rescue ActiveRecord::RecordNotUnique
      retry
    end

    def update
      Motor::Forms::Persistance.update_from_params!(@form, form_params)

      render json: { data: Motor::ApiQuery::BuildJson.call(@form, params) }
    rescue Motor::Forms::Persistance::NameAlreadyExists
      render json: { errors: [{ source: 'name', detail: 'Name already exists' }] }, status: :unprocessable_entity
    end

    def destroy
      @form.update!(deleted_at: Time.current)

      head :ok
    end

    private

    def build_form
      @form = Motor::Forms::Persistance.build_from_params(form_params)
    end

    def form_params
      params.require(:data).permit(:name, :description, :api_path, :http_method, preferences: {}, tags: [])
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
motor-admin-0.1.37 app/controllers/motor/forms_controller.rb
motor-admin-0.1.36 app/controllers/motor/forms_controller.rb
motor-admin-0.1.35 app/controllers/motor/forms_controller.rb
motor-admin-0.1.34 app/controllers/motor/forms_controller.rb
motor-admin-0.1.33 app/controllers/motor/forms_controller.rb
motor-admin-0.1.32 app/controllers/motor/forms_controller.rb
motor-admin-0.1.31 app/controllers/motor/forms_controller.rb
motor-admin-0.1.29 app/controllers/motor/forms_controller.rb
motor-admin-0.1.28 app/controllers/motor/forms_controller.rb
motor-admin-0.1.27 app/controllers/motor/forms_controller.rb
motor-admin-0.1.25 app/controllers/motor/forms_controller.rb
motor-admin-0.1.23 app/controllers/motor/forms_controller.rb
motor-admin-0.1.22 app/controllers/motor/forms_controller.rb
motor-admin-0.1.21 app/controllers/motor/forms_controller.rb
motor-admin-0.1.20 app/controllers/motor/forms_controller.rb
motor-admin-0.1.18 app/controllers/motor/forms_controller.rb
motor-admin-0.1.17 app/controllers/motor/forms_controller.rb
motor-admin-0.1.15 app/controllers/motor/forms_controller.rb
motor-admin-0.1.16 app/controllers/motor/forms_controller.rb
motor-admin-0.1.14 app/controllers/motor/forms_controller.rb