move towards "Clean Arch"
This commit is contained in:
parent
7bbee5b0fb
commit
f58db3d88b
8 changed files with 38 additions and 32 deletions
|
|
@ -1,10 +1,12 @@
|
||||||
(ns snippets.api
|
(ns snippets.infra.api
|
||||||
(:require
|
(:require
|
||||||
[ring.adapter.jetty :as jetty]
|
[ring.adapter.jetty :as jetty]
|
||||||
[clojure.pprint :as pprint]
|
[clojure.pprint :as pprint]
|
||||||
[taoensso.telemere :as t]
|
[taoensso.telemere :as t]
|
||||||
[snippets.core :as core]
|
[snippets.use-cases.view]
|
||||||
[snippets.config :as config]
|
[snippets.use-cases.delete]
|
||||||
|
[snippets.use-cases.create]
|
||||||
|
[snippets.infra.config :as config]
|
||||||
[muuntaja.middleware :as mm]
|
[muuntaja.middleware :as mm]
|
||||||
[ring.middleware.params]
|
[ring.middleware.params]
|
||||||
[reitit.ring :as rr]))
|
[reitit.ring :as rr]))
|
||||||
|
|
@ -15,23 +17,23 @@
|
||||||
|
|
||||||
(defn handle-create-snippet [{body :body-params}]
|
(defn handle-create-snippet [{body :body-params}]
|
||||||
(t/log! {:level :info, :data {:body body}} "Received request to create snippet")
|
(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"})
|
{:status 200, :body "snippet created"})
|
||||||
|
|
||||||
(defn handle-view-snippets [{params :query-params}]
|
(defn handle-view-snippets [{params :query-params}]
|
||||||
(let [limit (Integer/parseInt (get params "limit" "10"))
|
(let [limit (Integer/parseInt (get params "limit" "10"))
|
||||||
skip (Integer/parseInt (get params "skip" "0"))]
|
skip (Integer/parseInt (get params "skip" "0"))]
|
||||||
{:status 200
|
{: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}]
|
(defn handle-view-snippet [{params :query-params}]
|
||||||
(let [id (get params "id")]
|
(let [id (get params "id")]
|
||||||
{:status 200
|
{:status 200
|
||||||
:body (core/view-snippet id)}))
|
:body (snippets.use-cases.view/view-snippet id)}))
|
||||||
|
|
||||||
(defn handle-delete-snippet [{params :query-params}]
|
(defn handle-delete-snippet [{params :query-params}]
|
||||||
(let [id (get params "id")]
|
(let [id (get params "id")]
|
||||||
(core/delete-snippet id)
|
(snippets.use-cases.delete/delete-snippet id)
|
||||||
{:status 200
|
{:status 200
|
||||||
:body (format "Deleted snippet with id: %s if it existed" id)}))
|
:body (format "Deleted snippet with id: %s if it existed" id)}))
|
||||||
|
|
||||||
|
|
@ -52,14 +54,6 @@
|
||||||
:delete handle-delete-snippet}]])
|
:delete handle-delete-snippet}]])
|
||||||
(rr/create-default-handler)))
|
(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 []
|
(defn run-server []
|
||||||
(let [jetty-config (:jetty (config/get-config))
|
(let [jetty-config (:jetty (config/get-config))
|
||||||
port (:port jetty-config)
|
port (:port jetty-config)
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
(ns snippets.config
|
(ns snippets.infra.config
|
||||||
(:require [environ.core :refer [env]]))
|
(:require [environ.core :refer [env]]))
|
||||||
|
|
||||||
(defn- static-config [] (read-string (slurp "config.edn")))
|
(defn- static-config [] (read-string (slurp "config.edn")))
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
(ns snippets.db
|
(ns snippets.infra.db
|
||||||
(:require
|
(:require
|
||||||
[taoensso.telemere :as t]
|
[taoensso.telemere :as t]
|
||||||
[snippets.config :as config]
|
[snippets.infra.config :as config]
|
||||||
[xtdb.api :as xt]))
|
[xtdb.api :as xt]))
|
||||||
|
|
||||||
(def client
|
(def client
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
(ns snippets.backfill
|
(ns snippets.use-cases.backfill-from-file
|
||||||
(:require
|
(:require
|
||||||
[clojure.java.io :as io]
|
[clojure.java.io :as io]
|
||||||
[clojure.pprint :as pprint]
|
[clojure.pprint :as pprint]
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
(ns snippets.core
|
(ns snippets.use-cases.create
|
||||||
(:require
|
(:require
|
||||||
[taoensso.telemere :as t]
|
[taoensso.telemere :as t]
|
||||||
[snippets.db :as db]))
|
[snippets.infra.db :as db]))
|
||||||
|
|
||||||
(defn- uuid [] (str (java.util.UUID/randomUUID)))
|
(defn- uuid [] (str (java.util.UUID/randomUUID)))
|
||||||
|
|
||||||
|
|
@ -10,14 +10,3 @@
|
||||||
pub-date (java.util.Date.)]
|
pub-date (java.util.Date.)]
|
||||||
(t/log! {:level :info, :data {:title title :slug slug :id id}} "Creating snippet")
|
(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})))
|
(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))
|
|
||||||
8
src/snippets/use_cases/delete.clj
Normal file
8
src/snippets/use_cases/delete.clj
Normal 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))
|
||||||
4
src/snippets/use_cases/edit.clj
Normal file
4
src/snippets/use_cases/edit.clj
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
(ns snippets.use-cases.edit
|
||||||
|
(:require
|
||||||
|
[taoensso.telemere :as t]
|
||||||
|
[snippets.infra.db :as db]))
|
||||||
11
src/snippets/use_cases/view.clj
Normal file
11
src/snippets/use_cases/view.clj
Normal 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))
|
||||||
Loading…
Add table
Add a link
Reference in a new issue