Add mix task to add expiration to all local statuses
This commit is contained in:
parent
47698fc322
commit
e5557bf8ba
4 changed files with 77 additions and 10 deletions
|
|
@ -10,6 +10,7 @@ defmodule Mix.Tasks.Pleroma.Database do
|
|||
alias Pleroma.User
|
||||
require Logger
|
||||
require Pleroma.Constants
|
||||
import Ecto.Query
|
||||
import Mix.Pleroma
|
||||
use Mix.Task
|
||||
|
||||
|
|
@ -53,8 +54,6 @@ defmodule Mix.Tasks.Pleroma.Database do
|
|||
end
|
||||
|
||||
def run(["prune_objects" | args]) do
|
||||
import Ecto.Query
|
||||
|
||||
{options, [], []} =
|
||||
OptionParser.parse(
|
||||
args,
|
||||
|
|
@ -94,8 +93,6 @@ defmodule Mix.Tasks.Pleroma.Database do
|
|||
end
|
||||
|
||||
def run(["fix_likes_collections"]) do
|
||||
import Ecto.Query
|
||||
|
||||
start_pleroma()
|
||||
|
||||
from(object in Object,
|
||||
|
|
@ -130,4 +127,23 @@ defmodule Mix.Tasks.Pleroma.Database do
|
|||
|
||||
Maintenance.vacuum(args)
|
||||
end
|
||||
|
||||
def run(["ensure_expiration"]) do
|
||||
start_pleroma()
|
||||
days = Pleroma.Config.get([:mrf_activity_expiration, :days], 365)
|
||||
|
||||
Pleroma.Activity
|
||||
|> join(:left, [a], u in assoc(a, :expiration))
|
||||
|> where(local: true)
|
||||
|> where([a, u], is_nil(u))
|
||||
|> Pleroma.RepoStreamer.chunk_stream(100)
|
||||
|> Stream.each(fn activities ->
|
||||
Enum.each(activities, fn activity ->
|
||||
expires_at = Timex.shift(activity.inserted_at, days: days)
|
||||
|
||||
Pleroma.ActivityExpiration.create(activity, expires_at, false)
|
||||
end)
|
||||
end)
|
||||
|> Stream.run()
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue