diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2022-05-22 22:16:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-22 22:16:43 +0200 |
commit | a9b64b24d6c076cb96a66307c07d4f0158dc07da (patch) | |
tree | 8d41ef354040e5825c99bb3f656606dcc8d61291 /app/lib/importer/tags_index_importer.rb | |
parent | 54bb659ad14fda8d3427752d2c99716420997d6e (diff) |
Change algorithm of `tootctl search deploy` to improve performance (#18463)
Diffstat (limited to 'app/lib/importer/tags_index_importer.rb')
-rw-r--r-- | app/lib/importer/tags_index_importer.rb | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/app/lib/importer/tags_index_importer.rb b/app/lib/importer/tags_index_importer.rb new file mode 100644 index 000000000..f5bd8f052 --- /dev/null +++ b/app/lib/importer/tags_index_importer.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class Importer::TagsIndexImporter < Importer::BaseImporter + def import! + index.adapter.default_scope.find_in_batches(batch_size: @batch_size) do |tmp| + in_work_unit(tmp) do |tags| + bulk = Chewy::Index::Import::BulkBuilder.new(index, to_index: tags).bulk_body + + indexed = bulk.select { |entry| entry[:index] }.size + deleted = bulk.select { |entry| entry[:delete] }.size + + Chewy::Index::Import::BulkRequest.new(index).perform(bulk) + + [indexed, deleted] + end + end + + wait! + end + + private + + def index + TagsIndex + end +end |