diff --git a/app/controllers/bridges_controller.rb b/app/controllers/bridges_controller.rb index e07564d..d540f13 100644 --- a/app/controllers/bridges_controller.rb +++ b/app/controllers/bridges_controller.rb @@ -2,7 +2,7 @@ class BridgesController < ApplicationController before_action :authorize_request - before_action :set_bridge, only: %i[show update destroy] + before_action :set_bridge, except: %i[index create] def index render_message message: { bridges: @current_user.bridges.all } @@ -40,11 +40,28 @@ def destroy render_message end + def activate + if @bridge.update active: true + render_message + else + render_message status: :bad_request + end + end + + def deactivate + if @bridge.update active: false + render_message + else + render_message status: :bad_request + end + end + protected # rubocop:disable Metrics/MethodLength def bridge_params params.require(:bridge).permit( + :active, :title, :method, :retries, @@ -59,7 +76,11 @@ def bridge_params # rubocop:enable Metrics/MethodLength def set_bridge - @bridge = Bridge.includes(:events, :headers, :environment_variables).find_by(id: params[:id], user: @current_user) + @bridge = Bridge.includes( + :events, + :headers, + :environment_variables + ).find_by(id: (params[:id] || params[:bridge_id]), user_id: @current_user.id) render_message status: :unprocessable_entity unless @bridge end end diff --git a/config/routes.rb b/config/routes.rb index 3982662..c198c71 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -2,7 +2,10 @@ Rails.application.routes.draw do resource :user, except: %i[new edit] - resources :bridges + resources :bridges do + patch 'activate' + patch 'deactivate' + end resources :headers, :environment_variables, only: :destroy post 'login', to: 'sessions#create' diff --git a/db/migrate/20201120084233_add_active_to_bridges.rb b/db/migrate/20201120084233_add_active_to_bridges.rb new file mode 100644 index 0000000..f5c3d9d --- /dev/null +++ b/db/migrate/20201120084233_add_active_to_bridges.rb @@ -0,0 +1,5 @@ +class AddActiveToBridges < ActiveRecord::Migration[6.0] + def change + add_column :bridges, :active, :boolean, default: :true + end +end diff --git a/db/schema.rb b/db/schema.rb index 7ee69a3..2d049a0 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_11_12_094842) do +ActiveRecord::Schema.define(version: 2020_11_20_084233) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -26,6 +26,7 @@ t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false t.bigint "user_id", null: false + t.boolean "active", default: true t.index ["inbound_url"], name: "index_bridges_on_inbound_url", unique: true t.index ["user_id"], name: "index_bridges_on_user_id" end diff --git a/db/seeds.rb b/db/seeds.rb index bc30a3e..82842e1 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -12,7 +12,7 @@ def test_url method: 'POST', retries: 5, delay: 15, - data: { payload: {}, test_payload: {} } + data: { payload: '{}', test_payload: '{}' } ) bridge.environment_variables << EnvironmentVariable.create(key: 'database', value: 'a102345ij2') @@ -27,7 +27,7 @@ def test_url method: 'PATCH', retries: 0, delay: 0, - data: { payload: {}, test_payload: {} } + data: { payload: '{}', test_payload: '{}' } ) bridge2.environment_variables << EnvironmentVariable.create(key: 'database', value: 'z9992374623')