{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeOperators #-}
module Boots.Endpoint.Refresh(
endpointRefresh
) where
import Boots
import Boots.Endpoint.Class
import Boots.Factory.Web
import Data.Aeson
import GHC.Generics
import Salak
import Servant
type EndpointRefresh = "refresh" :> Post '[JSON] Refresh
data Refresh = Refresh
{ hasError :: !Bool
, msgs :: ![String]
} deriving (Eq, Show, Generic, ToJSON, ToSchema)
endpointRefresh
:: (HasWeb context env, MonadMask n, MonadIO n)
=> Proxy context
-> Factory n (WebEnv env context) ()
endpointRefresh pc = do
reload <- askReload
registerEndpoint "refresh" pc (Proxy @EndpointRefresh) (liftIO $ go <$> reload)
where
{-# INLINE go #-}
go ReloadResult{..} = Refresh{..}