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(String.to_charlist(zip_path), files, cwd: dirname) send_download(conn, {:file, zip_path}, filename: "db-export.zip") end end