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

90 lines
2.8 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-11-05 14:16:04 +00:00
#?(:clj [orchestra.core :refer [defn-spec]]
:cljs [orchestra.core :refer-macros [defn-spec]])
2024-02-20 17:05:33 +00:00
[dda.c4k-common.namespace :as ns]
2024-02-20 16:08:39 +00:00
[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
2024-02-20 17:05:33 +00:00
::pvc-storage-class-name ::pv-storage-size-gb ::ns/namespace]))
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 17:05:33 +00:00
(def default-config (merge ns/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?
2024-02-20 17:05:33 +00:00
[config pg-config?
auth pg-auth?]
(int/generate-secret config auth))
2024-02-20 16:08:39 +00:00
(defn-spec generate-service map?
2024-02-20 17:05:33 +00:00
[config pg-config?]
(let [final-config (merge default-config
config)]
(int/generate-service final-config)))
2024-02-20 16:33:22 +00:00
(defn-spec generate seq?
[config pg-config?
auth pg-auth?]
(let [final-config (merge default-config
config)]
2024-02-20 17:05:33 +00:00
[(int/generate-secret final-config auth)
2024-02-20 16:33:22 +00:00
(int/generate-persistent-volume final-config)
(int/generate-config final-config)
(int/generate-pvc final-config)
(int/generate-deployment final-config)
2024-02-20 17:05:33 +00:00
(int/generate-service final-config)]))