Class: BxBuilderChain::DocumentsController

Inherits:
ApplicationController
  • Object
show all
Defined in:
lib/generators/bx_builder_chain/templates/app/controllers/bx_builder_chain/documents_controller.rb

Constant Summary collapse

LLM_CLASS_NAME =
'BxBuilderChain::Llm::OpenAi'
CLIENT_CLASS_NAME =
'BxBuilderChain::Vectorsearch::Pgvector'

Instance Method Summary collapse

Instance Method Details

#delete_documentsObject



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/generators/bx_builder_chain/templates/app/controllers/bx_builder_chain/documents_controller.rb', line 13

def delete_documents
  return render json: { error: 'No document IDs provided' }, status: :bad_request unless params[:ids].present?

  # Filter documents by the provided IDs and the namespace from the current user groups
  documents_to_delete = BxBuilderChain::Document.where(id: params[:ids], namespace: current_user_document_groups.first)

  # Destroy the documents
  documents_to_delete.destroy_all

  render json: { success: 'Documents deleted successfully' }
end

#namespace_documentsObject



8
9
10
11
# File 'lib/generators/bx_builder_chain/templates/app/controllers/bx_builder_chain/documents_controller.rb', line 8

def namespace_documents
  documents = BxBuilderChain::Document.where(namespace: current_user_document_groups.first)
  render json: documents
end

#upload_and_processObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/generators/bx_builder_chain/templates/app/controllers/bx_builder_chain/documents_controller.rb', line 25

def upload_and_process
  service = DocumentUploadService.new(
    files: params[:files],
    user_groups: current_user_document_groups, # optional defaults to ['public']
    client_class_name: CLIENT_CLASS_NAME, # optional defaults to 'BxBuilderChain::Vectorsearch::Pgvector'
    llm_class_name: LLM_CLASS_NAME # optional defaults to 'BxBuilderChain::Llm::OpenAi'
  )

  result = service.upload_and_process

  if result[:error]
    render json: { error: result[:error] }, status: :bad_request
  else
    render json: result
  end
end

#upload_and_process_laterObject



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/generators/bx_builder_chain/templates/app/controllers/bx_builder_chain/documents_controller.rb', line 42

def upload_and_process_later
  service = DocumentUploadService.new(
    files: params[:files],
    current_user_groups: current_user_document_groups,
    client_class_name: CLIENT_CLASS_NAME,
    llm_class_name: LLM_CLASS_NAME
  )
  result = service.upload_and_process_later

  if result[:error]
    render json: { error: result[:error] }, status: :bad_request
  else
    render json: result
  end
end