Class: BxBuilderChain::DocumentUploadService
- Inherits:
-
Object
- Object
- BxBuilderChain::DocumentUploadService
- Defined in:
- lib/generators/bx_builder_chain/templates/app/services/bx_builder_chain/document_upload_service.rb
Constant Summary collapse
- WAITING_FOLDER =
Update this path
'path/to/waiting_folder'
Instance Attribute Summary collapse
-
#client_class_name ⇒ Object
readonly
Returns the value of attribute client_class_name.
-
#files ⇒ Object
readonly
Returns the value of attribute files.
-
#llm_class_name ⇒ Object
readonly
Returns the value of attribute llm_class_name.
-
#user_groups ⇒ Object
readonly
Returns the value of attribute user_groups.
Instance Method Summary collapse
-
#initialize(files:, user_groups: ['public'], client_class_name: 'BxBuilderChain::Vectorsearch::Pgvector', llm_class_name: 'BxBuilderChain::Llm::OpenAi') ⇒ DocumentUploadService
constructor
A new instance of DocumentUploadService.
- #upload_and_process ⇒ Object
- #upload_and_process_later ⇒ Object
Constructor Details
#initialize(files:, user_groups: ['public'], client_class_name: 'BxBuilderChain::Vectorsearch::Pgvector', llm_class_name: 'BxBuilderChain::Llm::OpenAi') ⇒ DocumentUploadService
Returns a new instance of DocumentUploadService.
7 8 9 10 11 12 |
# File 'lib/generators/bx_builder_chain/templates/app/services/bx_builder_chain/document_upload_service.rb', line 7 def initialize(files:, user_groups: ['public'], client_class_name: 'BxBuilderChain::Vectorsearch::Pgvector', llm_class_name: 'BxBuilderChain::Llm::OpenAi') @files = files @user_groups = user_groups @client_class_name = client_class_name @llm_class_name = llm_class_name end |
Instance Attribute Details
#client_class_name ⇒ Object (readonly)
Returns the value of attribute client_class_name.
3 4 5 |
# File 'lib/generators/bx_builder_chain/templates/app/services/bx_builder_chain/document_upload_service.rb', line 3 def client_class_name @client_class_name end |
#files ⇒ Object (readonly)
Returns the value of attribute files.
3 4 5 |
# File 'lib/generators/bx_builder_chain/templates/app/services/bx_builder_chain/document_upload_service.rb', line 3 def files @files end |
#llm_class_name ⇒ Object (readonly)
Returns the value of attribute llm_class_name.
3 4 5 |
# File 'lib/generators/bx_builder_chain/templates/app/services/bx_builder_chain/document_upload_service.rb', line 3 def llm_class_name @llm_class_name end |
#user_groups ⇒ Object (readonly)
Returns the value of attribute user_groups.
3 4 5 |
# File 'lib/generators/bx_builder_chain/templates/app/services/bx_builder_chain/document_upload_service.rb', line 3 def user_groups @user_groups end |
Instance Method Details
#upload_and_process ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/generators/bx_builder_chain/templates/app/services/bx_builder_chain/document_upload_service.rb', line 14 def upload_and_process return { error: 'No files provided' } unless @files&.any? files_n_paths = @files.map { |file| { path: file.tempfile.path, filename: file.original_filename } } client.add_data(paths: files_n_paths) { success: 'Files added to document store' } end |
#upload_and_process_later ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/generators/bx_builder_chain/templates/app/services/bx_builder_chain/document_upload_service.rb', line 23 def upload_and_process_later return { error: 'No files provided' } unless @files&.any? @files.each do |file| new_path = File.join(WAITING_FOLDER, file.original_filename) FileUtils.mv(file.tempfile.path, new_path) file_n_path = { path: new_path, filename: file.original_filename } # Enqueue for processing with Sidekiq BxBuilderChain::DocumentProcessorWorker.perform_async(file_n_path, llm_class: @llm_class_name, client_class: @client_class_name, namespaces: @user_groups) end { success: 'Files queued for processing' } end |