Abstract out the database maintenance. I'd like to use this from AdminFE too.
authorMark Felder <feld@FreeBSD.org>
Wed, 27 May 2020 21:40:51 +0000 (16:40 -0500)
committerMark Felder <feld@FreeBSD.org>
Wed, 27 May 2020 21:40:51 +0000 (16:40 -0500)
lib/mix/tasks/pleroma/database.ex
lib/pleroma/maintenance.ex [new file with mode: 0644]

index 2f1f3346988c8d9aa1aaec0c57dd3cf0911f959f..7049293d917f1ff59f71d88fbc3684aa2ed590fe 100644 (file)
@@ -5,6 +5,7 @@
 defmodule Mix.Tasks.Pleroma.Database do
   alias Pleroma.Conversation
   alias Pleroma.Object
+  alias Pleroma.Maintenance
   alias Pleroma.Repo
   alias Pleroma.User
   require Logger
@@ -34,17 +35,7 @@ defmodule Mix.Tasks.Pleroma.Database do
     )
 
     if Keyword.get(options, :vacuum) do
-      Logger.info("Runnning VACUUM FULL.")
-
-      Logger.warn(
-        "Re-packing your entire database may take a while and will consume extra disk space during the process."
-      )
-
-      Repo.query!(
-        "vacuum full;",
-        [],
-        timeout: :infinity
-      )
+      Maintenance.vacuum("full")
     end
   end
 
@@ -98,17 +89,7 @@ defmodule Mix.Tasks.Pleroma.Database do
     |> Repo.delete_all(timeout: :infinity)
 
     if Keyword.get(options, :vacuum) do
-      Logger.info("Runnning VACUUM FULL.")
-
-      Logger.warn(
-        "Re-packing your entire database may take a while and will consume extra disk space during the process."
-      )
-
-      Repo.query!(
-        "vacuum full;",
-        [],
-        timeout: :infinity
-      )
+      Maintenance.vacuum("full")
     end
   end
 
@@ -147,31 +128,6 @@ defmodule Mix.Tasks.Pleroma.Database do
   def run(["vacuum", args]) do
     start_pleroma()
 
-    case args do
-      "analyze" ->
-        Logger.info("Runnning VACUUM ANALYZE.")
-
-        Repo.query!(
-          "vacuum analyze;",
-          [],
-          timeout: :infinity
-        )
-
-      "full" ->
-        Logger.info("Runnning VACUUM FULL.")
-
-        Logger.warn(
-          "Re-packing your entire database may take a while and will consume extra disk space during the process."
-        )
-
-        Repo.query!(
-          "vacuum full;",
-          [],
-          timeout: :infinity
-        )
-
-      _ ->
-        Logger.error("Error: invalid vacuum argument.")
-    end
+    Maintenance.vacuum(args)
   end
 end
diff --git a/lib/pleroma/maintenance.ex b/lib/pleroma/maintenance.ex
new file mode 100644 (file)
index 0000000..326c178
--- /dev/null
@@ -0,0 +1,37 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Maintenance do
+  alias Pleroma.Repo
+  require Logger
+
+  def vacuum(args) do
+    case args do
+      "analyze" ->
+        Logger.info("Runnning VACUUM ANALYZE.")
+
+        Repo.query!(
+          "vacuum analyze;",
+          [],
+          timeout: :infinity
+        )
+
+      "full" ->
+        Logger.info("Runnning VACUUM FULL.")
+
+        Logger.warn(
+          "Re-packing your entire database may take a while and will consume extra disk space during the process."
+        )
+
+        Repo.query!(
+          "vacuum full;",
+          [],
+          timeout: :infinity
+        )
+
+      _ ->
+        Logger.error("Error: invalid vacuum argument.")
+    end
+  end
+end