c4k-common/src/main/cljc/dda/c4k_common/postgres.cljc

78 lines
2.4 KiB
Text
Raw Normal View History

2021-07-09 14:21:17 +00:00
(ns dda.c4k-common.postgres
(:require
[clojure.spec.alpha :as s]
2021-07-09 14:53:38 +00:00
#?(:cljs [shadow.resource :as rc])
2021-11-05 14:16:04 +00:00
#?(:clj [orchestra.core :refer [defn-spec]]
:cljs [orchestra.core :refer-macros [defn-spec]])
2024-02-20 15:03:56 +00:00
#?(:cljs [dda.c4k-common.macros :refer-macros [inline-resources]])
2021-07-09 14:21:17 +00:00
[dda.c4k-common.yaml :as yaml]
[dda.c4k-common.base64 :as b64]
2021-11-05 13:11:20 +00:00
[dda.c4k-common.predicate :as cp]
2024-02-20 16:08:39 +00:00
[dda.c4k-common.common :as cm]
[dda.c4k-common.postgres.postgres-internal :as int]))
2021-07-09 14:21:17 +00:00
2024-02-20 16:08:39 +00:00
(def postgres-size? int/postgres-size?)
2024-02-20 16:08:39 +00:00
(def postgres-image? int/postgres-image?)
2021-11-05 15:18:37 +00:00
2024-02-20 16:08:39 +00:00
(s/def ::postgres-db-user ::int/postgres-db-user)
(s/def ::postgres-db-password ::int/postgres-db-password)
(s/def ::postgres-data-volume-path ::int/postgres-data-volume-path)
(s/def ::postgres-size ::int/postgres-size)
(s/def ::db-name ::int/db-name)
(s/def ::pvc-storage-class-name ::int/pvc-storage-class-name)
(s/def ::pv-storage-size-gb ::int/pv-storage-size-gb)
2023-01-27 09:32:47 +00:00
(def pg-config?
(s/keys :opt-un [::postgres-size ::db-name ::postgres-data-volume-path
::pvc-storage-class-name ::pv-storage-size-gb]))
2023-01-27 09:32:47 +00:00
(def pg-auth?
2021-11-05 18:35:16 +00:00
(s/keys :opt-un [::postgres-db-user ::postgres-db-password]))
2021-07-09 14:21:17 +00:00
2021-11-05 14:16:04 +00:00
(def postgres-function (s/keys :opt-un [::deserializer ::optional]))
2024-02-20 16:08:39 +00:00
(def default-config {:postgres-image "postgres:13"
:postgres-size :2gb
:db-name "postgres"
:postgres-data-volume-path "/var/postgres"
:pv-storage-size-gb 10
:pvc-storage-class-name "manual"})
2021-07-09 14:53:38 +00:00
2024-02-20 16:08:39 +00:00
(defn-spec generate-config map?
2021-11-05 18:35:16 +00:00
[& config (s/? pg-config?)]
2024-02-20 16:08:39 +00:00
(let [final-config (merge default-config
(first config))]
(int/generate-config final-config)))
(defn-spec generate-deployment map?
2021-11-05 18:35:16 +00:00
[& config (s/? pg-config?)]
2024-02-20 16:08:39 +00:00
(let [final-config (merge default-config
(first config))]
(int/generate-deployment final-config)))
2021-07-09 14:21:17 +00:00
2024-02-20 16:08:39 +00:00
(defn-spec generate-persistent-volume map?
2021-11-05 15:18:37 +00:00
[config pg-config?]
2024-02-20 16:08:39 +00:00
(let [final-config (merge default-config
config)]
(int/generate-persistent-volume final-config)))
(defn-spec generate-pvc map?
[config pg-config?]
2024-02-20 16:08:39 +00:00
(let [final-config (merge default-config
config)]
(int/generate-pvc final-config)))
(defn-spec generate-secret map?
[my-auth pg-auth?]
(int/generate-secret my-auth))
(defn-spec generate-service map?
2021-11-05 15:18:37 +00:00
[]
2024-02-20 16:08:39 +00:00
(int/generate-service))