27 lines
857 B
Haskell
27 lines
857 B
Haskell
module Api where
|
|
|
|
import Relude
|
|
|
|
import Polysemy (Members, Sem)
|
|
import Polysemy.Error (Error)
|
|
import Servant.API
|
|
import Servant.Client.Streaming (ClientM, ClientError, client)
|
|
import Servant.Polysemy.Client (runClient, ServantClient)
|
|
|
|
import Api.Spec
|
|
import Api.Types
|
|
|
|
getSections' :: GetSections -> ClientM [Section]
|
|
getTopics' :: GetTopics -> ClientM [TopicInfo]
|
|
getTopic' :: GetTopic -> ClientM Topic
|
|
getSections' :<|> getTopics' :<|> getTopic' = client (Proxy @Api)
|
|
|
|
getSections :: Members '[ServantClient, Error ClientError] r => Sem r [Section]
|
|
getSections = runClient $ getSections' GetSections
|
|
|
|
getTopics :: Members '[ServantClient, Error ClientError] r => Sem r [TopicInfo]
|
|
getTopics = runClient $ getTopics' GetTopics
|
|
|
|
getTopic :: Members '[ServantClient, Error ClientError] r => Integer -> Sem r Topic
|
|
getTopic = runClient . getTopic' . GetTopic
|