2024-08-16 14:29:19 +00:00
|
|
|
(ns dda.backup.backup
|
|
|
|
(:require
|
|
|
|
[orchestra.core :refer [defn-spec]]
|
|
|
|
[clojure.spec.alpha :as s]
|
2024-08-16 15:36:28 +00:00
|
|
|
[dda.backup.backup.domain :as domain]
|
2024-08-20 16:06:24 +00:00
|
|
|
[dda.backup.restic :as restic]
|
2024-08-21 06:57:08 +00:00
|
|
|
[dda.backup.postgresql :as pg]
|
2024-08-16 15:36:28 +00:00
|
|
|
[dda.backup.infrastructure :as i]))
|
|
|
|
|
2024-08-21 06:57:08 +00:00
|
|
|
(def default
|
|
|
|
(merge restic/default
|
|
|
|
pg/default))
|
|
|
|
|
2024-08-20 16:06:24 +00:00
|
|
|
(s/def ::backup-file-config
|
|
|
|
(s/merge ::restic/restic-config
|
|
|
|
(s/keys :req-un [::domain/files]
|
|
|
|
:opt-un [])))
|
2024-08-16 15:36:28 +00:00
|
|
|
|
2024-08-21 06:57:08 +00:00
|
|
|
(s/def ::pg-role-dump-config
|
|
|
|
(s/merge ::pg/pg-config
|
|
|
|
::restic/restic-config
|
|
|
|
(s/keys :req-un [::domain/pg-role-prefix]
|
|
|
|
:opt-un [])))
|
|
|
|
|
|
|
|
(s/def ::pg-db-dump-config
|
|
|
|
(s/merge ::pg/pg-config
|
|
|
|
::restic/restic-config))
|
|
|
|
|
2024-08-20 16:06:24 +00:00
|
|
|
(defn-spec backup-file! nil?
|
|
|
|
[config ::backup-file-config]
|
2024-08-21 06:57:08 +00:00
|
|
|
(let [config-w-defaults (merge default config)]
|
2024-08-20 16:06:24 +00:00
|
|
|
(restic/unlock! config-w-defaults)
|
2024-08-21 06:57:08 +00:00
|
|
|
(i/execute!
|
|
|
|
(domain/backup-files-command config-w-defaults)
|
2024-08-16 15:36:28 +00:00
|
|
|
config-w-defaults)
|
2024-08-21 06:57:08 +00:00
|
|
|
(restic/forget! config-w-defaults)))
|
|
|
|
|
|
|
|
(defn-spec backup-db-roles! nil?
|
|
|
|
[config ::pg-role-dump-config]
|
|
|
|
(let [config-w-defaults (merge default config)]
|
|
|
|
(restic/unlock! config-w-defaults)
|
|
|
|
(i/execute! (domain/backup-role-command config-w-defaults) config-w-defaults)
|
|
|
|
(restic/forget! config-w-defaults)))
|
|
|
|
|
|
|
|
(defn-spec backup-db! nil?
|
|
|
|
[config ::pg-db-dump-config]
|
|
|
|
(let [config-w-defaults (merge default config)]
|
|
|
|
(restic/unlock! config-w-defaults)
|
|
|
|
(i/execute! (domain/backup-db-command config-w-defaults) config-w-defaults)
|
|
|
|
(restic/forget! config-w-defaults)))
|