@@ -9,9 +9,32 @@ module Valid where
99
1010import Servant
1111import Data.Void
12+import GHC.Generics
13+import Servant.API.Generic
14+import Servant.Server.Generic
1215
1316type Api = Get '[JSON] Int
1417 :<|> Capture "void" Void :> Get '[JSON] ()
15−
18+
19+data Routes route
20+ = Routes
21+ { getInt :: route :-
22+ Get '[JSON] Int
23+ , captureIt :: route :-
24+ Capture "void" Void :> Get '[JSON] ()
25+ } deriving Generic
26+
27+type RoutedApi = ToServantApi Routes
28+
29+-- routedApi = genericApi (Proxy :: Proxy Routes)
30+routedServer :: Server RoutedApi
31+routedServer = genericServer routes
32+
33+routes :: Routes AsServer
34+routes = Routes
35+ { getInt = pure 7
36+ , captureIt = const (pure ())
37+ }
38+
1639server :: Server Api
1740server = pure 7 :<|> const (pure ())