move towards "Clean Arch"

This commit is contained in:
Travis Shears 2025-06-10 09:27:25 +02:00
parent 7bbee5b0fb
commit f58db3d88b
8 changed files with 38 additions and 32 deletions

View file

@ -1,10 +1,12 @@
(ns snippets.api
(ns snippets.infra.api
(:require
[ring.adapter.jetty :as jetty]
[clojure.pprint :as pprint]
[taoensso.telemere :as t]
[snippets.core :as core]
[snippets.config :as config]
[snippets.use-cases.view]
[snippets.use-cases.delete]
[snippets.use-cases.create]
[snippets.infra.config :as config]
[muuntaja.middleware :as mm]
[ring.middleware.params]
[reitit.ring :as rr]))
@ -15,23 +17,23 @@
(defn handle-create-snippet [{body :body-params}]
(t/log! {:level :info, :data {:body body}} "Received request to create snippet")
(core/create-snippet body)
(snippets.use-cases.create/create-snippet body)
{:status 200, :body "snippet created"})
(defn handle-view-snippets [{params :query-params}]
(let [limit (Integer/parseInt (get params "limit" "10"))
skip (Integer/parseInt (get params "skip" "0"))]
{:status 200
:body (core/view-snippets {:limit limit :skip skip})}))
:body (snippets.use-cases.view/view-snippets {:limit limit :skip skip})}))
(defn handle-view-snippet [{params :query-params}]
(let [id (get params "id")]
{:status 200
:body (core/view-snippet id)}))
:body (snippets.use-cases.view/view-snippet id)}))
(defn handle-delete-snippet [{params :query-params}]
(let [id (get params "id")]
(core/delete-snippet id)
(snippets.use-cases.delete/delete-snippet id)
{:status 200
:body (format "Deleted snippet with id: %s if it existed" id)}))
@ -52,14 +54,6 @@
:delete handle-delete-snippet}]])
(rr/create-default-handler)))
;; (defroutes app-routes
;; (GET "/" [] "Hello World")
;; (route/not-found "Not Found"))
;; (def app
;; ;; use #' prefix for REPL-friendly code -- see note below
;; (wrap-defaults #'app-routes site-defaults))
;;
(defn run-server []
(let [jetty-config (:jetty (config/get-config))
port (:port jetty-config)

View file

@ -1,4 +1,4 @@
(ns snippets.config
(ns snippets.infra.config
(:require [environ.core :refer [env]]))
(defn- static-config [] (read-string (slurp "config.edn")))

View file

@ -1,7 +1,7 @@
(ns snippets.db
(ns snippets.infra.db
(:require
[taoensso.telemere :as t]
[snippets.config :as config]
[snippets.infra.config :as config]
[xtdb.api :as xt]))
(def client

View file

@ -1,4 +1,4 @@
(ns snippets.backfill
(ns snippets.use-cases.backfill-from-file
(:require
[clojure.java.io :as io]
[clojure.pprint :as pprint]

View file

@ -1,7 +1,7 @@
(ns snippets.core
(ns snippets.use-cases.create
(:require
[taoensso.telemere :as t]
[snippets.db :as db]))
[snippets.infra.db :as db]))
(defn- uuid [] (str (java.util.UUID/randomUUID)))
@ -10,14 +10,3 @@
pub-date (java.util.Date.)]
(t/log! {:level :info, :data {:title title :slug slug :id id}} "Creating snippet")
(db/put-snippet id {:title title :slug slug :markdown markdown :tags tags :pub-date pub-date})))
(defn view-snippet [key]
(t/log! {:level :info, :data {:key key}} "Viewing snippet by id")
(db/get-snippet-by-id key))
(defn view-snippets [& args]
(db/list-snippets args))
(defn delete-snippet [key]
(t/log! {:level :info, :data {:key key}} "Deleting snippet by id")
(db/delete-snippet key))

View file

@ -0,0 +1,8 @@
(ns snippets.use-cases.delete
(:require
[snippets.infra.db :as db]
[taoensso.telemere :as t]))
(defn delete-snippet [key]
(t/log! {:level :info, :data {:key key}} "Deleting snippet by id")
(db/delete-snippet key))

View file

@ -0,0 +1,4 @@
(ns snippets.use-cases.edit
(:require
[taoensso.telemere :as t]
[snippets.infra.db :as db]))

View file

@ -0,0 +1,11 @@
(ns snippets.use-cases.view
(:require
[taoensso.telemere :as t]
[snippets.infra.db :as db]))
(defn view-snippet [key]
(t/log! {:level :info, :data {:key key}} "Viewing snippet by id")
(db/get-snippet-by-id key))
(defn view-snippets [& args]
(db/list-snippets args))