packages feed

roboservant-0.1.0.3: test/Valid.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeOperators #-}

module Valid where

import Data.Void
import GHC.Generics
import Servant
import Servant.Server.Generic

type Api =
  Get '[JSON] Int
    :<|> Capture "void" Void :> Get '[JSON] ()

data Routes route
  = Routes
      { getInt ::
          route
            :- Summary "i'm a summary!" :> Get '[JSON] Int,
        captureIt ::
          route
            :- Capture "void" Void :> Get '[JSON] ()
      }
  deriving (Generic)

type RoutedApi = ToServantApi Routes

-- routedApi = genericApi (Proxy :: Proxy Routes)
routedServer :: Server RoutedApi
routedServer = genericServer routes

routes :: Routes AsServer
routes =
  Routes
    { getInt = pure 7,
      captureIt = const (pure ())
    }

server :: Server Api
server = pure 7 :<|> const (pure ())