29 lines
1.0 KiB
Ruby
29 lines
1.0 KiB
Ruby
|
class MigrateToNewSearchImpl < ActiveRecord::Migration[5.2]
|
||
|
disable_ddl_transaction!
|
||
|
|
||
|
def up
|
||
|
safety_assured {
|
||
|
execute 'DROP TRIGGER IF EXISTS tsvectorinsert ON statuses'
|
||
|
execute 'DROP TRIGGER IF EXISTS tsvectorupdate ON statuses'
|
||
|
execute 'DROP FUNCTION IF EXISTS tsv_update_trigger'
|
||
|
execute 'DROP INDEX IF EXISTS tsv_idx'
|
||
|
execute 'ALTER TABLE statuses DROP COLUMN IF EXISTS tsv'
|
||
|
execute 'DROP INDEX IF EXISTS index_statuses_on_text_trgm'
|
||
|
execute 'DROP INDEX IF EXISTS index_statuses_on_spoiler_text_trgm'
|
||
|
execute <<-SQL.squish
|
||
|
CREATE OR REPLACE FUNCTION public.f_normalize(text)
|
||
|
RETURNS text LANGUAGE sql PARALLEL SAFE STRICT AS
|
||
|
$func$
|
||
|
SELECT REGEXP_REPLACE(LOWER(unaccent($1)), '"(.*)"', '\\\\y\\1\\\\y')
|
||
|
$func$
|
||
|
SQL
|
||
|
execute 'CREATE INDEX CONCURRENTLY IF NOT EXISTS index_statuses_on_normalized_text_trgm ON statuses USING GIN (normalized_text gin_trgm_ops)'
|
||
|
}
|
||
|
end
|
||
|
|
||
|
def down
|
||
|
#raise ActiveRecord::IrreversibleMigration
|
||
|
true
|
||
|
end
|
||
|
end
|