diff options
Diffstat (limited to 'lib/mix/tasks')
| -rw-r--r-- | lib/mix/tasks/pleroma/database.ex | 24 | ||||
| -rw-r--r-- | lib/mix/tasks/pleroma/release_env.ex | 76 | 
2 files changed, 20 insertions, 80 deletions
| diff --git a/lib/mix/tasks/pleroma/database.ex b/lib/mix/tasks/pleroma/database.ex index 82e2abdcb..d57e59b11 100644 --- a/lib/mix/tasks/pleroma/database.ex +++ b/lib/mix/tasks/pleroma/database.ex @@ -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 diff --git a/lib/mix/tasks/pleroma/release_env.ex b/lib/mix/tasks/pleroma/release_env.ex deleted file mode 100644 index 9da74ffcf..000000000 --- a/lib/mix/tasks/pleroma/release_env.ex +++ /dev/null @@ -1,76 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Mix.Tasks.Pleroma.ReleaseEnv do -  use Mix.Task -  import Mix.Pleroma - -  @shortdoc "Generate Pleroma environment file." -  @moduledoc File.read!("docs/administration/CLI_tasks/release_environments.md") - -  def run(["gen" | rest]) do -    {options, [], []} = -      OptionParser.parse( -        rest, -        strict: [ -          force: :boolean, -          path: :string -        ], -        aliases: [ -          p: :path, -          f: :force -        ] -      ) - -    file_path = -      get_option( -        options, -        :path, -        "Environment file path", -        "./config/pleroma.env" -      ) - -    env_path = Path.expand(file_path) - -    proceed? = -      if File.exists?(env_path) do -        get_option( -          options, -          :force, -          "Environment file already exists. Do you want to overwrite the #{env_path} file? (y/n)", -          "n" -        ) === "y" -      else -        true -      end - -    if proceed? do -      case do_generate(env_path) do -        {:error, reason} -> -          shell_error( -            File.Error.message(%{action: "write to file", reason: reason, path: env_path}) -          ) - -        _ -> -          shell_info("\nThe file generated: #{env_path}.\n") - -          shell_info(""" -          WARNING: before start pleroma app please make sure to make the file read-only and non-modifiable. -            Example: -              chmod 0444 #{file_path} -              chattr +i #{file_path} -          """) -      end -    else -      shell_info("\nThe file is exist. #{env_path}.\n") -    end -  end - -  def do_generate(path) do -    content = "RELEASE_COOKIE=#{Base.encode32(:crypto.strong_rand_bytes(32))}" - -    File.mkdir_p!(Path.dirname(path)) -    File.write(path, content) -  end -end | 
