diff --git a/lib/mix/tasks/pleroma/activity.ex b/lib/mix/tasks/pleroma/activity.ex new file mode 100644 index 000000000..ca9224b67 --- /dev/null +++ b/lib/mix/tasks/pleroma/activity.ex @@ -0,0 +1,58 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2018 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Mix.Tasks.Pleroma.Activity do + alias Pleroma.Activity + alias Pleroma.Activity.Search + alias Pleroma.User + alias Pleroma.Web.CommonAPI + alias Pleroma.Pagination + require Logger + import Mix.Pleroma + import Ecto.Query + + def run(["get", id | _rest]) do + start_pleroma() + + id + |> Activity.get_by_id() + |> IO.inspect() + end + + def run(["delete_by_keyword", user, keyword | _rest]) do + start_pleroma() + u = User.get_by_nickname(user) + + Activity + |> Activity.with_preloaded_object() + |> Activity.restrict_deactivated_users() + |> Activity.Queries.by_author(u) + |> query_with(keyword) + |> Pagination.fetch_paginated( + %{"offset" => 0, "limit" => 20, "skip_order" => false}, + :offset + ) + |> Enum.map(fn x -> CommonAPI.delete(x.id, u) end) + |> Enum.count() + |> IO.puts() + end + + defp query_with(q, search_query) do + %{rows: [[tsc]]} = + Ecto.Adapters.SQL.query!( + Pleroma.Repo, + "select current_setting('default_text_search_config')::regconfig::oid;" + ) + + from([a, o] in q, + where: + fragment( + "to_tsvector(?::oid::regconfig, ?->>'content') @@ websearch_to_tsquery(?)", + ^tsc, + o.data, + ^search_query + ) + ) + end +end diff --git a/lib/pleroma/web/common_api.ex b/lib/pleroma/web/common_api.ex index f6a131c21..3266b1c60 100644 --- a/lib/pleroma/web/common_api.ex +++ b/lib/pleroma/web/common_api.ex @@ -398,9 +398,11 @@ def listen(user, data) do def post(user, %{status: _} = data) do with {:ok, draft} <- ActivityDraft.create(user, data) do activity = ActivityPub.create(draft.changes, draft.preview?) + unless draft.preview? do Pleroma.Elasticsearch.maybe_put_into_elasticsearch(activity) end + activity end end