22 (:require [clojure.data.json :as json]
33 [ring.middleware.params :refer [wrap-params]]
44 [ring.middleware.json :refer [wrap-json-body wrap-json-response]]
5- [walue.infra.logging :as logging ]
6- [walue.port.evaluation -port :as port]))
5+ [walue.port.evaluation-port :as evaluation-port ]
6+ [walue.port.logging -port :as logging- port]))
77
8- (defn- handle-evaluate-portfolio [request evaluation-service]
8+ (defn- handle-evaluate-portfolio [request evaluation-service logging-service ]
99 (try
1010 (let [body (:body request)
1111 portfolio (or (get body " portfolio" ) (get body :portfolio ))
1212 criteria (or (get body " criterios" ) (get body :criterios ))]
1313 (if (and portfolio criteria)
14- (let [result (port/evaluate-portfolio evaluation-service portfolio criteria)]
14+ (let [result (evaluation- port/evaluate-portfolio evaluation-service portfolio criteria)]
1515 {:status 200
1616 :body result})
1717 {:status 400
1818 :body {:error " Invalid request. Portfolio and criteria are required." }}))
1919 (catch Exception e
20- (logging/ error " Error evaluating portfolio:" (.getMessage e))
20+ (logging-port/log- error logging-service ( str " Error evaluating portfolio: " (.getMessage e) ))
2121 {:status 500
2222 :body {:error " An error occurred while processing your request." }})))
2323
2424(defn- handle-health-check [_]
2525 {:status 200
2626 :body {:status " UP" }})
2727
28- (defn make-handler [evaluation-service]
28+ (defn make-handler [evaluation-service logging-service ]
2929 (fn [request]
3030 (let [uri (:uri request)
3131 method (:request-method request)]
32- (logging/ info " Request received:" method uri)
32+ (logging-port/log- info logging-service ( str " Request received: " method " " uri) )
3333 (cond
3434 (and (= uri " /api/evaluate" ) (= method :post ))
35- (handle-evaluate-portfolio request evaluation-service)
35+ (handle-evaluate-portfolio request evaluation-service logging-service )
3636
3737 (and (= uri " /health" ) (= method :get ))
3838 (handle-health-check request)
4141 {:status 404
4242 :body {:error " Not found" }}))))
4343
44- (defn wrap-logging [handler]
44+ (defn wrap-logging [handler logging-service ]
4545 (fn [request]
4646 (let [start (System/currentTimeMillis )
4747 response (handler request)
4848 duration (- (System/currentTimeMillis ) start)]
49- (logging/info " Request completed in" duration " ms with status" (:status response))
49+ (logging-port/log-info logging-service
50+ (str " Request completed in " duration " ms with status " (:status response)))
5051 response)))
5152
52- (defn wrap-exception [handler]
53+ (defn wrap-exception [handler logging-service ]
5354 (fn [request]
5455 (try
5556 (handler request)
5657 (catch Exception e
57- (logging/ error " Unhandled exception:" (.getMessage e))
58+ (logging-port/log- error logging-service ( str " Unhandled exception: " (.getMessage e) ))
5859 {:status 500
5960 :body {:error " Internal server error" }}))))
6061
61- (defn create-app [evaluation-service]
62- (-> (make-handler evaluation-service)
63- (wrap-logging )
64- (wrap-exception )
62+ (defn create-app [evaluation-service logging-service ]
63+ (-> (make-handler evaluation-service logging-service )
64+ (wrap-logging logging-service )
65+ (wrap-exception logging-service )
6566 (wrap-json-body {:keywords? false })
6667 (wrap-json-response )
6768 (wrap-params )))
0 commit comments