diff --git a/lib/music_library/repo.ex b/lib/music_library/repo.ex index c6c98f65..88f7e689 100644 --- a/lib/music_library/repo.ex +++ b/lib/music_library/repo.ex @@ -35,4 +35,6 @@ defmodule MusicLibrary.Repo do end def vacuum, do: query("VACUUM") + + def optimize, do: query("PRAGMA optimize") end diff --git a/lib/music_library_web/live/maintenance_live/index.ex b/lib/music_library_web/live/maintenance_live/index.ex index 006e4c66..21afbe74 100644 --- a/lib/music_library_web/live/maintenance_live/index.ex +++ b/lib/music_library_web/live/maintenance_live/index.ex @@ -109,4 +109,20 @@ defmodule MusicLibraryWeb.MaintenanceLive.Index do |> put_toast(:error, "Database vacuum failed: #{inspect(reason)}.")} end end + + def handle_event("db_optimize", _params, socket) do + case Repo.optimize() do + {:ok, _result} -> + {:noreply, + socket + |> put_toast(:info, gettext("Database optimized successfully."))} + + {:error, reason} -> + Logger.error("Database optimize failed: #{inspect(reason)}.") + + {:noreply, + socket + |> put_toast(:error, "Database optimize failed: #{inspect(reason)}.")} + end + end end diff --git a/lib/music_library_web/live/maintenance_live/index.html.heex b/lib/music_library_web/live/maintenance_live/index.html.heex index 3e9edf1e..e887002a 100644 --- a/lib/music_library_web/live/maintenance_live/index.html.heex +++ b/lib/music_library_web/live/maintenance_live/index.html.heex @@ -91,13 +91,22 @@

diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index 3e5246b5..cf0bf470 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -1665,3 +1665,18 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Apply" msgstr "" + +#: lib/music_library_web/live/maintenance_live/index.ex +#, elixir-autogen, elixir-format +msgid "Database optimized successfully." +msgstr "" + +#: lib/music_library_web/live/maintenance_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Optimize" +msgstr "" + +#: lib/music_library_web/live/maintenance_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Running optimize..." +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index 3d73345a..2b35dcdd 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -1665,3 +1665,18 @@ msgstr "" #, elixir-autogen, elixir-format, fuzzy msgid "Apply" msgstr "" + +#: lib/music_library_web/live/maintenance_live/index.ex +#, elixir-autogen, elixir-format, fuzzy +msgid "Database optimized successfully." +msgstr "" + +#: lib/music_library_web/live/maintenance_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Optimize" +msgstr "" + +#: lib/music_library_web/live/maintenance_live/index.html.heex +#, elixir-autogen, elixir-format +msgid "Running optimize..." +msgstr ""