16 lines
540 B
Elixir
16 lines
540 B
Elixir
defmodule PostlandWeb.ExportController do
|
|
use PostlandWeb, :controller
|
|
|
|
def export(conn, _params) do
|
|
db_path = Postland.Repo.config() |> Keyword.get(:database)
|
|
dirname = Path.dirname(db_path)
|
|
filename = Path.basename(db_path)
|
|
|
|
files = [filename, "#{filename}-shm", "#{filename}-wal"] |> Enum.map(&String.to_charlist/1)
|
|
zip_path = Path.join([File.cwd!(), "priv", "tmp", "db-export.zip"])
|
|
|
|
:zip.create(zip_path, files, cwd: dirname)
|
|
|
|
send_download(conn, {:file, zip_path}, filename: "db-export.zip")
|
|
end
|
|
end
|