Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d6d30493b |
+21
-1
@@ -170,16 +170,36 @@ Rails.application.routes.draw do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
resources :labels, only: [:index, :show, :create, :update, :destroy]
|
resources :labels, only: [:index, :show, :create, :update, :destroy]
|
||||||
resources :response_sources, only: [:create] do
|
resources :response_sources do
|
||||||
collection do
|
collection do
|
||||||
post :parse
|
post :parse
|
||||||
end
|
end
|
||||||
member do
|
member do
|
||||||
post :add_document
|
post :add_document
|
||||||
post :remove_document
|
post :remove_document
|
||||||
|
get :search
|
||||||
|
post :chat
|
||||||
|
post :copilot
|
||||||
|
post :ingest_content
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
resources :response_documents do
|
||||||
|
collection do
|
||||||
|
post :bulk_create
|
||||||
|
get :search
|
||||||
|
end
|
||||||
|
member do
|
||||||
|
get :responses
|
||||||
|
end
|
||||||
|
end
|
||||||
|
resources :responses do
|
||||||
|
collection do
|
||||||
|
get :search
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
resources :notifications, only: [:index, :update, :destroy] do
|
resources :notifications, only: [:index, :update, :destroy] do
|
||||||
collection do
|
collection do
|
||||||
post :read_all
|
post :read_all
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
class Api::V1::Accounts::ResponseSourcesController < Api::V1::Accounts::BaseController
|
||||||
|
before_action :current_account
|
||||||
|
before_action :check_authorization
|
||||||
|
before_action :find_document, except: [:index, :create, :bulk_create, :search]
|
||||||
|
before_action :set_current_page, only: [:index, :search]
|
||||||
|
|
||||||
|
RESULTS_PER_PAGE = 25
|
||||||
|
|
||||||
|
def index
|
||||||
|
@documents = account.response_documents.page(@current_page).per(RESULTS_PER_PAGE).order(created_at: :desc)
|
||||||
|
@documents_count = account.response_documents.count
|
||||||
|
end
|
||||||
|
|
||||||
|
def search
|
||||||
|
documents = account.response_documents.where('external_link ILIKE :query', query: "%#{params[:query]}%")
|
||||||
|
@documents = documents.page(@current_page).per(RESULTS_PER_PAGE) if documents.present?
|
||||||
|
@documents_count = documents.count
|
||||||
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
render json: @document
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
document = account.response_documents.new(document_params)
|
||||||
|
if document.save
|
||||||
|
render json: document, status: :created
|
||||||
|
else
|
||||||
|
render json: { errors: document.errors.full_messages }, status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def bulk_create
|
||||||
|
documents = params[:external_links].map do |doc_params|
|
||||||
|
account.response_documents.new(doc_params.permit(:name, :external_link).merge(assistant_id: params[:assistant_id]))
|
||||||
|
end
|
||||||
|
|
||||||
|
documents.each do |document|
|
||||||
|
render json: { errors: document.errors.full_messages }, status: :unprocessable_entity and return unless document.save
|
||||||
|
end
|
||||||
|
|
||||||
|
render json: documents, status: :created
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
if @document.update(document_params.except(:assistant_id, :external_link))
|
||||||
|
render json: @document
|
||||||
|
else
|
||||||
|
render json: { errors: @document.errors.full_messages }, status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@document.destroy
|
||||||
|
head :no_content
|
||||||
|
end
|
||||||
|
|
||||||
|
def responses
|
||||||
|
render json: @document.responses
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def find_document
|
||||||
|
@document = account.response_documents.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
def document_params
|
||||||
|
params.require(:document).permit(:name, :content, :external_link, :assistant_id, external_links: [:name, :external_link])
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_current_page
|
||||||
|
@current_page = params[:page] || 1
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
class Api::V1::Accounts::ResponsesController < Api::V1::Accounts::BaseController
|
||||||
|
before_action :current_account
|
||||||
|
before_action :check_authorization
|
||||||
|
before_action :find_response, only: [:show, :update, :destroy]
|
||||||
|
before_action :set_current_page, only: [:index, :search]
|
||||||
|
|
||||||
|
RESULTS_PER_PAGE = 25
|
||||||
|
|
||||||
|
def index
|
||||||
|
@responses = account.responses.page(@current_page).per(RESULTS_PER_PAGE).order(created_at: :desc)
|
||||||
|
@responses_count = account.responses.count
|
||||||
|
end
|
||||||
|
|
||||||
|
def search
|
||||||
|
responses = account.responses.where('question ILIKE :query OR answer ILIKE :query', query: "%#{params[:query]}%")
|
||||||
|
@responses = responses.page(@current_page).per(RESULTS_PER_PAGE) if responses.present?
|
||||||
|
@responses_count = responses.count
|
||||||
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
render json: @response
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
response = account.responses.new(response_params)
|
||||||
|
if response.save
|
||||||
|
render json: response, status: :created
|
||||||
|
else
|
||||||
|
render json: { errors: response.errors.full_messages }, status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
if @response.update(response_params)
|
||||||
|
render json: @response
|
||||||
|
else
|
||||||
|
render json: { errors: @response.errors.full_messages }, status: :unprocessable_entity
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@response.destroy
|
||||||
|
head :no_content
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def response_params
|
||||||
|
params.require(:response).permit(:question, :answer, :document_id, :assistant_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
def find_response
|
||||||
|
@response = account.responses.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_current_page
|
||||||
|
@current_page = params[:page] || 1
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user