# 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 alias Pleroma.Search.DatabaseSearch 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) index_type = cond do Pleroma.Config.get([:database, :rum_enabled]) -> :rum Pleroma.Config.get([:database, :pgroonga_enabled]) -> :pgroonga true -> :gin end search_function = if :persistent_term.get({Pleroma.Repo, :postgres_version}) >= 11 do :websearch else :plain end Activity |> Activity.with_preloaded_object() |> Activity.restrict_deactivated_users() |> Activity.Queries.by_author(u) |> DatabaseSearch.query_with(index_type, keyword, search_function) |> 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 end