1.1 KiB
1.1 KiB
Routes
The addon partner API defines the routes this application must support.
Module Header
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeOperators #-}
module Routes where
-- external dependencies
import Data.Proxy
import Network.Wai
import Network.Wai.Handler.Warp
import Servant
-- internal dependencies
import Heroku.Types as Heroku
import qualified Models
import qualified Types
URL Routing
type Api = "heroku" :> "resources" :> ReqBody '[JSON] Heroku.Provider :> Post '[JSON] Types.App
api :: Proxy Api
api = Proxy
server :: Pool Postgresql -> Server Api
server pool =
provisionAppH
where
provisionAppH settings = liftIO $ provisionApp settings
provisionApp :: Heroku.Provider -> IO Types.App
provisionApp settings = runDbConn pool $ do
appKey <- insert $ Models.App (Heroku.heroku_id settings) (Heroku.region settings)
let showKey = show appKey
Types.App showKey