add onprem search reindex
This commit is contained in:
@@ -0,0 +1,17 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class SearchEntriesReindexController < ApplicationController
|
||||||
|
def create
|
||||||
|
authorize!(:manage, EncryptedConfig)
|
||||||
|
|
||||||
|
ReindexAllSearchEntriesJob.perform_async
|
||||||
|
|
||||||
|
AccountConfig.find_or_initialize_by(account_id: Account.minimum(:id), key: :fulltext_search)
|
||||||
|
.update!(value: true)
|
||||||
|
|
||||||
|
Docuseal.instance_variable_set(:@fulltext_search, nil)
|
||||||
|
|
||||||
|
redirect_back(fallback_location: settings_account_path,
|
||||||
|
notice: "Started building search index. Visit #{root_url}jobs/busy to check progress.")
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -34,6 +34,7 @@ class SetupController < ApplicationController
|
|||||||
{ key: EncryptedConfig::ESIGN_CERTS_KEY, value: GenerateCertificate.call.transform_values(&:to_pem) }
|
{ key: EncryptedConfig::ESIGN_CERTS_KEY, value: GenerateCertificate.call.transform_values(&:to_pem) }
|
||||||
]
|
]
|
||||||
@account.encrypted_configs.create!(encrypted_configs)
|
@account.encrypted_configs.create!(encrypted_configs)
|
||||||
|
@account.account_configs.create!(key: :fulltext_search, value: true) if SearchEntry.table_exists?
|
||||||
|
|
||||||
Docuseal.refresh_default_url_options!
|
Docuseal.refresh_default_url_options!
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class SubmittersAutocompleteController < ApplicationController
|
|||||||
|
|
||||||
def search_submitters(submitters)
|
def search_submitters(submitters)
|
||||||
if SELECT_COLUMNS.include?(params[:field])
|
if SELECT_COLUMNS.include?(params[:field])
|
||||||
if Docuseal.fulltext_search?(current_user)
|
if Docuseal.fulltext_search?
|
||||||
Submitters.fulltext_search_field(current_user, submitters, params[:q], params[:field])
|
Submitters.fulltext_search_field(current_user, submitters, params[:q], params[:field])
|
||||||
else
|
else
|
||||||
column = Submitter.arel_table[params[:field].to_sym]
|
column = Submitter.arel_table[params[:field].to_sym]
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class ReindexAllSearchEntriesJob
|
||||||
|
include Sidekiq::Job
|
||||||
|
|
||||||
|
def perform
|
||||||
|
SearchEntries.reindex_all
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -165,6 +165,14 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% if !Docuseal.multitenant? && SearchEntry.table_exists? && (!Docuseal.fulltext_search? || params[:reindex] == 'true') && can?(:manage, EncryptedConfig) %>
|
||||||
|
<div class="flex items-center justify-between py-2.5">
|
||||||
|
<span>
|
||||||
|
Efficient search with search index
|
||||||
|
</span>
|
||||||
|
<%= button_to params[:reindex] == 'true' ? 'Reindex' : 'Build Search Index', settings_search_entries_reindex_index_path, method: :post, class: 'btn btn-sm btn-neutral text-white px-4' %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= render 'compliances' %>
|
<%= render 'compliances' %>
|
||||||
|
|||||||
@@ -163,6 +163,7 @@ Rails.application.routes.draw do
|
|||||||
scope '/settings', as: :settings do
|
scope '/settings', as: :settings do
|
||||||
unless Docuseal.multitenant?
|
unless Docuseal.multitenant?
|
||||||
resources :storage, only: %i[index create], controller: 'storage_settings'
|
resources :storage, only: %i[index create], controller: 'storage_settings'
|
||||||
|
resources :search_entries_reindex, only: %i[create]
|
||||||
resources :sms, only: %i[index], controller: 'sms_settings'
|
resources :sms, only: %i[index], controller: 'sms_settings'
|
||||||
end
|
end
|
||||||
resources :email, only: %i[index create], controller: 'email_smtp_settings'
|
resources :email, only: %i[index create], controller: 'email_smtp_settings'
|
||||||
|
|||||||
+8
-5
@@ -73,12 +73,15 @@ module Docuseal
|
|||||||
@default_pkcs ||= GenerateCertificate.load_pkcs(Docuseal::CERTS)
|
@default_pkcs ||= GenerateCertificate.load_pkcs(Docuseal::CERTS)
|
||||||
end
|
end
|
||||||
|
|
||||||
def fulltext_search?(_user)
|
def fulltext_search?
|
||||||
return false unless SearchEntry.table_exists?
|
return @fulltext_search unless @fulltext_search.nil?
|
||||||
return true if Docuseal.multitenant?
|
|
||||||
return true if Rails.env.local?
|
|
||||||
|
|
||||||
false
|
@fulltext_search =
|
||||||
|
if SearchEntry.table_exists?
|
||||||
|
Docuseal.multitenant? ? true : AccountConfig.exists?(key: :fulltext_search, value: true)
|
||||||
|
else
|
||||||
|
false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def enable_pwa?
|
def enable_pwa?
|
||||||
|
|||||||
+1
-1
@@ -8,7 +8,7 @@ module Submissions
|
|||||||
module_function
|
module_function
|
||||||
|
|
||||||
def search(current_user, submissions, keyword, search_values: false, search_template: false)
|
def search(current_user, submissions, keyword, search_values: false, search_template: false)
|
||||||
if Docuseal.fulltext_search?(current_user)
|
if Docuseal.fulltext_search?
|
||||||
fulltext_search(current_user, submissions, keyword, search_template:)
|
fulltext_search(current_user, submissions, keyword, search_template:)
|
||||||
else
|
else
|
||||||
plain_search(submissions, keyword, search_values:, search_template:)
|
plain_search(submissions, keyword, search_values:, search_template:)
|
||||||
|
|||||||
+1
-1
@@ -14,7 +14,7 @@ module Submitters
|
|||||||
module_function
|
module_function
|
||||||
|
|
||||||
def search(current_user, submitters, keyword)
|
def search(current_user, submitters, keyword)
|
||||||
if Docuseal.fulltext_search?(current_user)
|
if Docuseal.fulltext_search?
|
||||||
fulltext_search(current_user, submitters, keyword)
|
fulltext_search(current_user, submitters, keyword)
|
||||||
else
|
else
|
||||||
plain_search(submitters, keyword)
|
plain_search(submitters, keyword)
|
||||||
|
|||||||
+1
-1
@@ -38,7 +38,7 @@ module Templates
|
|||||||
end
|
end
|
||||||
|
|
||||||
def search(current_user, templates, keyword)
|
def search(current_user, templates, keyword)
|
||||||
if Docuseal.fulltext_search?(current_user)
|
if Docuseal.fulltext_search?
|
||||||
fulltext_search(current_user, templates, keyword)
|
fulltext_search(current_user, templates, keyword)
|
||||||
else
|
else
|
||||||
plain_search(templates, keyword)
|
plain_search(templates, keyword)
|
||||||
|
|||||||
Reference in New Issue
Block a user