forked from AkkomaGang/akkoma
* I cretaed a folder 'development' * I split up the file dev.md into three parts and moved it to this folder * index.md * authentication_authorization.md * mrf.md * I also moved ap_extensions.md * I created a new file setting_up_pleroma_dev.md
51 lines
1.4 KiB
Elixir
51 lines
1.4 KiB
Elixir
defmodule Pleroma.Repo.Migrations.AddFtsIndexToObjectsTwo do
|
|
use Ecto.Migration
|
|
|
|
def up do
|
|
execute("create extension if not exists rum")
|
|
|
|
drop_if_exists(
|
|
index(:objects, ["(to_tsvector('english', data->>'content'))"],
|
|
using: :gin,
|
|
name: :objects_fts
|
|
)
|
|
)
|
|
|
|
alter table(:objects) do
|
|
add(:fts_content, :tsvector)
|
|
end
|
|
|
|
execute("CREATE FUNCTION objects_fts_update() RETURNS trigger AS $$
|
|
begin
|
|
new.fts_content := to_tsvector('english', new.data->>'content');
|
|
return new;
|
|
end
|
|
$$ LANGUAGE plpgsql")
|
|
|
|
execute(
|
|
"create index if not exists objects_fts on objects using RUM (fts_content rum_tsvector_addon_ops, inserted_at) with (attach = 'inserted_at', to = 'fts_content');"
|
|
)
|
|
|
|
execute("CREATE TRIGGER tsvectorupdate BEFORE INSERT OR UPDATE ON objects
|
|
FOR EACH ROW EXECUTE PROCEDURE objects_fts_update()")
|
|
|
|
execute("UPDATE objects SET updated_at = NOW()")
|
|
end
|
|
|
|
def down do
|
|
execute("drop index if exists objects_fts")
|
|
execute("drop trigger if exists tsvectorupdate on objects")
|
|
execute("drop function if exists objects_fts_update()")
|
|
|
|
alter table(:objects) do
|
|
remove(:fts_content, :tsvector)
|
|
end
|
|
|
|
create_if_not_exists(
|
|
index(:objects, ["(to_tsvector('english', data->>'content'))"],
|
|
using: :gin,
|
|
name: :objects_fts
|
|
)
|
|
)
|
|
end
|
|
end
|