diff --git a/lib/mix/tasks/music_library/prod/db_migrate.ex b/lib/mix/tasks/music_library/prod/db_migrate.ex index 0edbe293..f9e993eb 100644 --- a/lib/mix/tasks/music_library/prod/db_migrate.ex +++ b/lib/mix/tasks/music_library/prod/db_migrate.ex @@ -7,10 +7,12 @@ defmodule Mix.Tasks.MusicLibrary.Prod.DbMigrate do Requires the `flyctl` CLI to be installed and authenticated. """ + import Mix.Tasks.MusicLibrary.Prod.Helpers + @impl Mix.Task def run(_args) do IO.puts("Running migrations on production database") - System.cmd("flyctl", ["ssh", "console", "--command", "bin/migrate"], into: IO.stream()) + fly_ssh("bin/migrate") end end diff --git a/lib/mix/tasks/music_library/prod/db_pull.ex b/lib/mix/tasks/music_library/prod/db_pull.ex index c5698a32..07cc2ed3 100644 --- a/lib/mix/tasks/music_library/prod/db_pull.ex +++ b/lib/mix/tasks/music_library/prod/db_pull.ex @@ -6,6 +6,7 @@ defmodule Mix.Tasks.MusicLibrary.Prod.DbPull do Requires the `flyctl` CLI to be installed and authenticated. """ + import Mix.Tasks.MusicLibrary.Prod.Helpers @impl Mix.Task def run(_args) do @@ -15,7 +16,7 @@ defmodule Mix.Tasks.MusicLibrary.Prod.DbPull do remote_db = "/mnt/music_library/music_library_prod.db" local_db = "data/music_library_prod_#{DateTime.to_unix(current_time)}.db" - case System.cmd("flyctl", ["ssh", "sftp", "get", remote_db, local_db], into: IO.stream()) do + case fly_sftp_get(remote_db, local_db) do {_stream, 1} -> IO.puts("Failed to pull the database") System.halt(1) diff --git a/lib/mix/tasks/music_library/prod/db_vacuum.ex b/lib/mix/tasks/music_library/prod/db_vacuum.ex index 4c385a13..d6996548 100644 --- a/lib/mix/tasks/music_library/prod/db_vacuum.ex +++ b/lib/mix/tasks/music_library/prod/db_vacuum.ex @@ -8,12 +8,14 @@ defmodule Mix.Tasks.MusicLibrary.Prod.DbVacuum do Requires the `flyctl` CLI to be installed and authenticated. """ + import Mix.Tasks.MusicLibrary.Prod.Helpers + @impl Mix.Task def run(_args) do IO.puts("Running VACUUM on the production database") command = ~s(bin/music_library rpc 'MusicLibrary.Repo.query\("VACUUM"\)') - System.cmd("flyctl", ["ssh", "console", "--command", command], into: IO.stream()) + fly_ssh(command) end end diff --git a/lib/mix/tasks/music_library/prod/helpers.ex b/lib/mix/tasks/music_library/prod/helpers.ex new file mode 100644 index 00000000..0d6baa1b --- /dev/null +++ b/lib/mix/tasks/music_library/prod/helpers.ex @@ -0,0 +1,9 @@ +defmodule Mix.Tasks.MusicLibrary.Prod.Helpers do + def fly_ssh(command) do + System.cmd("flyctl", ["ssh", "console", "--command", command], into: IO.stream()) + end + + def fly_sftp_get(remote_path, local_path) do + System.cmd("flyctl", ["ssh", "sftp", "get", remote_path, local_path], into: IO.stream()) + end +end