Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #8 from AtmosSystem/refactoring
Refactoring service
- Loading branch information
Showing
4 changed files
with
47 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,24 +1,29 @@ | ||
(ns atmos-logs.api | ||
(:require [atmos-kernel.web.core :refer [json-web-app | ||
request-body]] | ||
(:require [atmos-kernel.web.ring :refer [def-json-web-api]] | ||
[ring.middleware.defaults :refer [api-defaults]] | ||
[atmos-kernel.web.security.auth :refer [token-auth]] | ||
[atmos-kernel.web.route :refer [defatmos-route | ||
[atmos-kernel.web.route :refer [defatmos-routes | ||
atmos-main-route | ||
atmos-GET | ||
atmos-PUT]] | ||
[atmos-logs.core :refer :all])) | ||
[atmos-kernel.serializer.core :refer :all] | ||
[atmos-logs.core :refer :all] | ||
[atmos-logs.serializers :refer :all])) | ||
|
||
|
||
(def logs "logs") | ||
(def log "log") | ||
|
||
(defatmos-route app-routes :logs | ||
(atmos-GET [logs] (get-all logs request) | ||
:authentication-needed? true) | ||
(declare app app-routes request id) | ||
|
||
(atmos-GET [log :id] (get-log id) | ||
:authentication-needed? true) | ||
(defatmos-routes app-routes | ||
(atmos-main-route :logs) | ||
|
||
(atmos-PUT [log] (add-log (request-body request)) | ||
:authentication-needed? true)) | ||
(atmos-GET [logs] request | ||
(serialize (get-all logs request) serialize-log)) | ||
|
||
(def app (json-web-app app-routes token-auth)) | ||
(atmos-PUT [log] request | ||
(let [log-data (de-serialize (request :params) de-serialize-log)] | ||
(add-log log-data)))) | ||
|
||
(def-json-web-api app app-routes api-defaults token-auth) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,8 @@ | ||
(ns atmos-logs.core | ||
(:require [atmos-kernel.protocol :refer [defatmos-record-protocol]])) | ||
|
||
(declare ILogProtocol add-log get-log) | ||
(declare ILogProtocol add-log) | ||
|
||
(defatmos-record-protocol :Log '[add-log get-log]) | ||
(defatmos-record-protocol :Log '[add-log]) | ||
|
||
(defmulti get-all (fn [entity request] (keyword entity))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
(ns atmos-logs.serializers | ||
(:require [atmos-kernel.serializer.core :refer :all])) | ||
|
||
(defrecord Log [id date-time log-type module user data]) | ||
(defrecord LogAddition [logger-type log-type module user data]) | ||
|
||
(defn serialize-log | ||
[log-data] | ||
(let [{:keys [id date_time log_type module user data]} log-data | ||
|
||
log-data (mapping (make-fields ->Log serializer-field [[id 'id] | ||
[date_time 'date_time] | ||
[log_type 'log_type] | ||
[module 'module] | ||
[user 'user] | ||
[data 'data]]))] | ||
|
||
log-data)) | ||
|
||
(defn de-serialize-log | ||
[log-data] | ||
(mapping (->LogAddition (de-serializer-field (get log-data "logger_type")) | ||
(de-serializer-field (get log-data "log_type")) | ||
(de-serializer-field (get log-data "module")) | ||
(de-serializer-field (get log-data "user" nil) :number) | ||
(de-serializer-field (get log-data "data"))))) |