38 lines
837 B
Elixir
38 lines
837 B
Elixir
|
# 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
|