Skip to content

Instantly share code, notes, and snippets.

@renatoalencar
Last active June 7, 2020 02:39
Show Gist options
  • Save renatoalencar/84af0e8e6c36bbb8715e9ff0f77d4bfc to your computer and use it in GitHub Desktop.
Save renatoalencar/84af0e8e6c36bbb8715e9ff0f77d4bfc to your computer and use it in GitHub Desktop.
;;
;; Todo o ciclo de vida do banco de dados
;; fica encapsulado em um componente.
;;
(defrecord Database [uri database connection]
component/Lifecycle
(start [component]
(let [{:keys [conn db]} (mg/connect-via-uri uri)]
(assoc component :database db
::connection conn)))
(stop [component]
(-> component ::connection mg/disconnect)
component))
;;
;; O construtor tem que ser uma funcao pura
;;
(defn new-database [uri]
(map->Database {:uri uri}))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment