X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fmix%2Ftasks%2Fpleroma%2Factivity.ex;h=512897a02cb27aaa8d62d58e55451ce1ce6af85b;hb=bb54720778da713a6cfff0a44e9fb97b2e018c57;hp=e03966e18da4782879c8f211b852a3450bba014f;hpb=3cc6cb266b7b1dbdbf8f86ee0f7e5a9161bc0e70;p=akkoma diff --git a/lib/mix/tasks/pleroma/activity.ex b/lib/mix/tasks/pleroma/activity.ex index e03966e18..512897a02 100644 --- a/lib/mix/tasks/pleroma/activity.ex +++ b/lib/mix/tasks/pleroma/activity.ex @@ -4,10 +4,13 @@ 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 - use Mix.Task - + import Ecto.Query @shortdoc "A collection of activity debug tasks" @moduledoc """ A collection of activity related tasks @@ -16,8 +19,44 @@ defmodule Mix.Tasks.Pleroma.Activity do """ 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