Browse Source

Abstract out the database maintenance. I'd like to use this from AdminFE too.

1570-levenshtein-distance-user-search
Mark Felder 4 years ago
parent
commit
30f96b19c1
2 changed files with 41 additions and 48 deletions
  1. +4
    -48
      lib/mix/tasks/pleroma/database.ex
  2. +37
    -0
      lib/pleroma/maintenance.ex

+ 4
- 48
lib/mix/tasks/pleroma/database.ex View 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

+ 37
- 0
lib/pleroma/maintenance.ex View File

@@ -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

Loading…
Cancel
Save