Functions for working with H2 databases shared between the | (ns metabase.cmd.copy.h2 (:require [clojure.java.io :as io] [clojure.string :as str] [metabase.db :as mdb] [metabase.util :as u] [metabase.util.log :as log])) |
(set! *warn-on-reflection* true) | |
(defn- add-file-prefix-if-needed [h2-filename] (letfn [(prepend-protocol [s] (str "file:" (.getAbsolutePath (io/file s)))) (remove-extension [s] (str/replace s #"\.mv\.db$" ))] (cond-> h2-filename (not (str/starts-with? h2-filename "file:")) prepend-protocol (str/ends-with? h2-filename ".mv.db") remove-extension))) | |
Create a [[javax.sql.DataSource]] for the H2 database with | (defn h2-data-source ^javax.sql.DataSource [h2-filename] (let [h2-filename (add-file-prefix-if-needed h2-filename)] (mdb/broken-out-details->DataSource :h2 {:db h2-filename}))) |
Delete existing h2 database files. | (defn delete-existing-h2-database-files! [h2-filename] (doseq [filename [h2-filename (str h2-filename ".mv.db")]] (when (.exists (io/file filename)) (io/delete-file filename) (log/warn (u/format-color :red "Output H2 database already exists: %s, removing." filename))))) |