git.iko.soy/haskell-servant/servant-elm
on master help sign in
36 lines 1.1 kB history raw
1{-# LANGUAGE DataKinds #-}
2{-# LANGUAGE OverloadedStrings #-}
3{-# LANGUAGE TemplateHaskell #-}
4{-# LANGUAGE TypeOperators #-}
6import Servant.API ((:<|>), (:>), Capture, Get, JSON, Post, ReqBody)
7import Servant.Elm (DefineElm (DefineElm), ElmOptions(urlPrefix),
8 Proxy (Proxy), UrlPrefix(Static), defaultOptions,
9 defElmImports, defElmOptions, deriveBoth,
10 generateElmModuleWith)
12data Book = Book
13 { name :: String
14 } deriving (Show, Eq)
16deriveBoth defaultOptions ''Book
18type BooksApi = "books" :> ReqBody '[JSON] Book :> Post '[JSON] Book
19 :<|> "books" :> Get '[JSON] [Book]
20 :<|> "books" :> Capture "bookId" Int :> Get '[JSON] Book
22myElmOpts :: ElmOptions
23myElmOpts = defElmOptions { urlPrefix = Static "http://localhost:8000" }
25main :: IO ()
26main =
27 generateElmModuleWith
28 myElmOpts
29 [ "Generated"
30 , "BooksApi"
31 ]
32 defElmImports
33 "elm"
34 [ DefineElm (Proxy :: Proxy Book)
35 ]
36 (Proxy :: Proxy BooksApi)