compojure-api rocks da house!
This commit is contained in:
parent
9d9a6ae0ac
commit
d25581a453
2 changed files with 52 additions and 2 deletions
|
@ -14,5 +14,9 @@
|
|||
;;compojure
|
||||
[compojure "1.3.1"]
|
||||
|
||||
|
||||
])
|
||||
;;compojure-api
|
||||
[metosin/compojure-api "0.16.5"]
|
||||
[prismatic/schema "0.3.3"]
|
||||
[metosin/ring-http-response "0.5.2"]
|
||||
[metosin/ring-swagger "0.14.1"]
|
||||
[metosin/ring-swagger-ui "2.0.17"]])
|
||||
|
|
46
src/meetup/compjure-api.clj
Normal file
46
src/meetup/compjure-api.clj
Normal file
|
@ -0,0 +1,46 @@
|
|||
(ns meetup.compojure-api
|
||||
(:require [ring.adapter.jetty :refer [run-jetty]]
|
||||
[ring.util.http-response :refer :all]
|
||||
[compojure.api.sweet :refer :all]
|
||||
[schema.core :as s]))
|
||||
|
||||
(defonce orders (atom {}))
|
||||
|
||||
(s/defschema Supplement
|
||||
{:type (s/enum :cheese :beef)})
|
||||
|
||||
(s/defschema Pizza
|
||||
{:recipe (s/enum :hawaian :italian :vegan)
|
||||
:size (s/enum :small :medium :large)
|
||||
(s/optional-key :supplements) [Supplement]})
|
||||
|
||||
(s/defschema Dessert
|
||||
{:type (s/enum :yoghourt :cake :fruit)})
|
||||
|
||||
(s/defschema Drink
|
||||
{:brand (s/enum :coca-cola :fanta :sprite)})
|
||||
|
||||
(s/defschema Order
|
||||
{:type (s/enum :in-place :take-away)
|
||||
:pizzas [Pizza]
|
||||
:drinks [Drink]
|
||||
:desserts [Desserts]})
|
||||
|
||||
(defn place [order]
|
||||
(swap! orders into {(keyword (str (java.util.UUID/randomUUID))) order}) order)
|
||||
|
||||
(defapi app
|
||||
(swagger-ui)
|
||||
(swagger-docs :title "Chez Guillaume, pizza de qualité!!")
|
||||
(swaggered "Order"
|
||||
:description "Order operations"
|
||||
(context "/order" []
|
||||
(POST* "/" []
|
||||
:return Order
|
||||
:body [order Order]
|
||||
:summary "Place an order"
|
||||
(place order)))))
|
||||
|
||||
(defonce server
|
||||
(run-jetty (-> #'app)
|
||||
{:port 3003 :join? false}))
|
Loading…
Reference in a new issue