diff --git a/db/migrate/20240816072859_populate_submitter_account_id.rb b/db/migrate/20240816072859_populate_submitter_account_id.rb index 29960068..d3ccf572 100644 --- a/db/migrate/20240816072859_populate_submitter_account_id.rb +++ b/db/migrate/20240816072859_populate_submitter_account_id.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class PopulateSubmitterAccountId < ActiveRecord::Migration[7.1] - disable_ddl_transaction + disable_ddl_transaction! class MigrationSubmitter < ApplicationRecord self.table_name = 'submitters' diff --git a/db/migrate/20241022125135_populate_completed_submitters_and_documents.rb b/db/migrate/20241022125135_populate_completed_submitters_and_documents.rb index c2c3dd57..6e373656 100644 --- a/db/migrate/20241022125135_populate_completed_submitters_and_documents.rb +++ b/db/migrate/20241022125135_populate_completed_submitters_and_documents.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class PopulateCompletedSubmittersAndDocuments < ActiveRecord::Migration[7.2] - disable_ddl_transaction + disable_ddl_transaction! class MigrationSubmitter < ApplicationRecord self.table_name = 'submitters' diff --git a/db/migrate/20241029192232_populate_webhook_urls.rb b/db/migrate/20241029192232_populate_webhook_urls.rb index cb8b5546..ae11d8ad 100644 --- a/db/migrate/20241029192232_populate_webhook_urls.rb +++ b/db/migrate/20241029192232_populate_webhook_urls.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class PopulateWebhookUrls < ActiveRecord::Migration[7.2] - disable_ddl_transaction + disable_ddl_transaction! class MigrationWebhookUrl < ActiveRecord::Base self.table_name = 'webhook_urls' diff --git a/db/migrate/20250523121121_add_shared_link_to_templates.rb b/db/migrate/20250523121121_add_shared_link_to_templates.rb index 6fe962eb..039872c2 100644 --- a/db/migrate/20250523121121_add_shared_link_to_templates.rb +++ b/db/migrate/20250523121121_add_shared_link_to_templates.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class AddSharedLinkToTemplates < ActiveRecord::Migration[8.0] - disable_ddl_transaction + disable_ddl_transaction! class MigrationTemplate < ActiveRecord::Base self.table_name = 'templates' diff --git a/db/migrate/20250603105556_create_search_enties.rb b/db/migrate/20250603105556_create_search_enties.rb index 2b219f84..bee12609 100644 --- a/db/migrate/20250603105556_create_search_enties.rb +++ b/db/migrate/20250603105556_create_search_enties.rb @@ -1,11 +1,11 @@ # frozen_string_literal: true class CreateSearchEnties < ActiveRecord::Migration[8.0] + disable_ddl_transaction! + def up return unless adapter_name == 'PostgreSQL' - enable_extension 'btree_gin' - create_table :search_entries do |t| t.references :record, null: false, polymorphic: true, index: false t.bigint :account_id, null: false @@ -14,12 +14,24 @@ class CreateSearchEnties < ActiveRecord::Migration[8.0] t.timestamps end - add_index :search_entries, %i[account_id tsvector], using: :gin, where: "record_type = 'Submitter'", - name: 'index_search_entries_on_account_id_tsvector_submitter' - add_index :search_entries, %i[account_id tsvector], using: :gin, where: "record_type = 'Submission'", - name: 'index_search_entries_on_account_id_tsvector_submission' - add_index :search_entries, %i[account_id tsvector], using: :gin, where: "record_type = 'Template'", - name: 'index_search_entries_on_account_id_tsvector_template' + begin + enable_extension 'btree_gin' + rescue StandardError + nil + end + + btree_gin_enabled = extension_enabled?('btree_gin') + + add_index :search_entries, btree_gin_enabled ? %i[account_id tsvector] : :tsvector, + using: :gin, where: "record_type = 'Submitter'", + name: 'index_search_entries_on_account_id_tsvector_submitter' + add_index :search_entries, btree_gin_enabled ? %i[account_id tsvector] : :tsvector, + using: :gin, where: "record_type = 'Submission'", + name: 'index_search_entries_on_account_id_tsvector_submission' + add_index :search_entries, btree_gin_enabled ? %i[account_id tsvector] : :tsvector, + using: :gin, where: "record_type = 'Template'", + name: 'index_search_entries_on_account_id_tsvector_template' + add_index :search_entries, %i[record_id record_type], unique: true end @@ -28,6 +40,10 @@ class CreateSearchEnties < ActiveRecord::Migration[8.0] drop_table :search_entries - disable_extension 'btree_gin' + begin + disable_extension 'btree_gin' + rescue StandardError + nil + end end end diff --git a/db/migrate/20250608163157_add_ngram_to_search_index.rb b/db/migrate/20250608163157_add_ngram_to_search_index.rb index 3af6729d..8d609ca4 100644 --- a/db/migrate/20250608163157_add_ngram_to_search_index.rb +++ b/db/migrate/20250608163157_add_ngram_to_search_index.rb @@ -4,13 +4,18 @@ class AddNgramToSearchIndex < ActiveRecord::Migration[8.0] def change return unless adapter_name == 'PostgreSQL' + btree_gin_enabled = extension_enabled?('btree_gin') + add_column :search_entries, :ngram, :tsvector - add_index :search_entries, %i[account_id ngram], using: :gin, where: "record_type = 'Submitter'", - name: 'index_search_entries_on_account_id_ngram_submitter' - add_index :search_entries, %i[account_id ngram], using: :gin, where: "record_type = 'Submission'", - name: 'index_search_entries_on_account_id_ngram_submission' - add_index :search_entries, %i[account_id ngram], using: :gin, where: "record_type = 'Template'", - name: 'index_search_entries_on_account_id_ngram_template' + add_index :search_entries, btree_gin_enabled ? %i[account_id tsvector] : :tsvector, + using: :gin, where: "record_type = 'Submitter'", + name: 'index_search_entries_on_account_id_ngram_submitter' + add_index :search_entries, btree_gin_enabled ? %i[account_id tsvector] : :tsvector, + using: :gin, where: "record_type = 'Submission'", + name: 'index_search_entries_on_account_id_ngram_submission' + add_index :search_entries, btree_gin_enabled ? %i[account_id tsvector] : :tsvector, + using: :gin, where: "record_type = 'Template'", + name: 'index_search_entries_on_account_id_ngram_template' end end