X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fmix%2Ftasks%2Fpleroma%2Factivity.ex;h=84b9c16f9dd331f96a44c4ecc35308381130d46c;hb=07a48b9293e4046c50b5d424d60a1bf16c7cc198;hp=b4ab2f7df8408ca0067e4db22db74d86365c6c66;hpb=eb1c7d75f4456440ef63e158f50fec6ed10c8918;p=akkoma diff --git a/lib/mix/tasks/pleroma/activity.ex b/lib/mix/tasks/pleroma/activity.ex index b4ab2f7df..84b9c16f9 100644 --- a/lib/mix/tasks/pleroma/activity.ex +++ b/lib/mix/tasks/pleroma/activity.ex @@ -1,19 +1,17 @@ +# credo:disable-for-this-file # 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.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 - - mix pleroma.activity get - """ def run(["get", id | _rest]) do start_pleroma() @@ -21,4 +19,40 @@ defmodule Mix.Tasks.Pleroma.Activity do |> 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