defp do_migrate_to_db(config_file) do
if File.exists?(config_file) do
+ shell_info("Running migrate settings from file: #{Path.expand(config_file)}")
Ecto.Adapters.SQL.query!(Repo, "TRUNCATE config;")
Ecto.Adapters.SQL.query!(Repo, "ALTER SEQUENCE config_id_seq RESTART;")
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
+ if Pleroma.Config.get([:database, :rum_enabled]) 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
+ 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');")
+ 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("CREATE TRIGGER tsvectorupdate BEFORE INSERT OR UPDATE ON objects
+ FOR EACH ROW EXECUTE PROCEDURE objects_fts_update()")
- execute("UPDATE objects SET updated_at = NOW()")
+ execute("UPDATE objects SET updated_at = NOW()")
+ else
+ raise Ecto.MigrationError,
+ message: "Migration is not allowed. You can change this behavior by setting `database/rum_enabled` to true."
+ end
end
def down do