module API
  module V3
    class SystemHooks < Grape::API
      before do
        authenticate!
        authenticated_as_admin!
      end

      resource :hooks do
        desc 'Get the list of system hooks' do
          success ::API::Entities::Hook
        end
        get do
          present SystemHook.all, with: ::API::Entities::Hook
        end

        desc 'Delete a hook' do
          success ::API::Entities::Hook
        end
        params do
          requires :id, type: Integer, desc: 'The ID of the system hook'
        end
        delete ":id" do
          hook = SystemHook.find_by(id: params[:id])
          not_found!('System hook') unless hook

          present hook.destroy, with: ::API::Entities::Hook
        end
      end
    end
  end
end