{-# LANGUAGE DataKinds #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE RankNTypes #-}

module Utxorpc.Query (QueryHandlers (..), serviceHandlers) where

import Control.Monad.IO.Class (MonadIO)
import Network.GRPC.HTTP2.ProtoLens (RPC (RPC))
import Network.GRPC.Server (ServerStreamHandler, ServiceHandler, UnaryHandler)
import Proto.Utxorpc.V1alpha.Query.Query
import Utxorpc.Logged (UtxorpcServiceLogger, loggedSStream, loggedUnary)

data QueryHandlers m = QueryHandlers
  { forall (m :: * -> *).
QueryHandlers m
-> UnaryHandler m ReadParamsRequest ReadParamsResponse
readParams :: UnaryHandler m ReadParamsRequest ReadParamsResponse,
    forall (m :: * -> *).
QueryHandlers m
-> UnaryHandler m ReadUtxosRequest ReadUtxosResponse
readUtxos :: UnaryHandler m ReadUtxosRequest ReadUtxosResponse,
    forall (m :: * -> *).
QueryHandlers m
-> UnaryHandler m SearchUtxosRequest SearchUtxosResponse
searchUtxos :: UnaryHandler m SearchUtxosRequest SearchUtxosResponse,
    forall (m :: * -> *).
QueryHandlers m
-> UnaryHandler m ReadGenesisRequest ReadGenesisResponse
readGenesis :: UnaryHandler m ReadGenesisRequest ReadGenesisResponse,
    forall (m :: * -> *).
QueryHandlers m
-> UnaryHandler m ReadEraSummaryRequest ReadEraSummaryResponse
readEraSummary :: UnaryHandler m ReadEraSummaryRequest ReadEraSummaryResponse
  }

serviceHandlers ::
  (MonadIO m) =>
  Maybe (UtxorpcServiceLogger m) ->
  (forall x. m x -> IO x) ->
  QueryHandlers m ->
  [ServiceHandler]
serviceHandlers :: forall (m :: * -> *).
MonadIO m =>
Maybe (UtxorpcServiceLogger m)
-> (forall x. m x -> IO x) -> QueryHandlers m -> [ServiceHandler]
serviceHandlers Maybe (UtxorpcServiceLogger m)
logger forall x. m x -> IO x
f QueryHandlers {UnaryHandler m ReadParamsRequest ReadParamsResponse
readParams :: forall (m :: * -> *).
QueryHandlers m
-> UnaryHandler m ReadParamsRequest ReadParamsResponse
readParams :: UnaryHandler m ReadParamsRequest ReadParamsResponse
readParams, UnaryHandler m ReadUtxosRequest ReadUtxosResponse
readUtxos :: forall (m :: * -> *).
QueryHandlers m
-> UnaryHandler m ReadUtxosRequest ReadUtxosResponse
readUtxos :: UnaryHandler m ReadUtxosRequest ReadUtxosResponse
readUtxos, UnaryHandler m SearchUtxosRequest SearchUtxosResponse
searchUtxos :: forall (m :: * -> *).
QueryHandlers m
-> UnaryHandler m SearchUtxosRequest SearchUtxosResponse
searchUtxos :: UnaryHandler m SearchUtxosRequest SearchUtxosResponse
searchUtxos, UnaryHandler m ReadGenesisRequest ReadGenesisResponse
readGenesis :: forall (m :: * -> *).
QueryHandlers m
-> UnaryHandler m ReadGenesisRequest ReadGenesisResponse
readGenesis :: UnaryHandler m ReadGenesisRequest ReadGenesisResponse
readGenesis, UnaryHandler m ReadEraSummaryRequest ReadEraSummaryResponse
readEraSummary :: forall (m :: * -> *).
QueryHandlers m
-> UnaryHandler m ReadEraSummaryRequest ReadEraSummaryResponse
readEraSummary :: UnaryHandler m ReadEraSummaryRequest ReadEraSummaryResponse
readEraSummary} =
  [ServiceHandler
readParamsSH, ServiceHandler
readUtxosSH, ServiceHandler
searchUtxosSH, ServiceHandler
readGenesisSH, ServiceHandler
readEraSummarySH]
  where
    readParamsSH :: ServiceHandler
readParamsSH = (forall x. m x -> IO x)
-> RPC QueryService "readParams"
-> UnaryHandler m ReadParamsRequest ReadParamsResponse
-> Maybe (UtxorpcServiceLogger m)
-> ServiceHandler
forall (m :: * -> *) r i o.
(MonadIO m, GRPCInput r i, GRPCOutput r o, Show i, Show o) =>
(forall x. m x -> IO x)
-> r
-> UnaryHandler m i o
-> Maybe (UtxorpcServiceLogger m)
-> ServiceHandler
loggedUnary m x -> IO x
forall x. m x -> IO x
f (RPC QueryService "readParams"
forall s (m :: Symbol). RPC s m
RPC :: RPC QueryService "readParams") UnaryHandler m ReadParamsRequest ReadParamsResponse
readParams Maybe (UtxorpcServiceLogger m)
logger
    readUtxosSH :: ServiceHandler
readUtxosSH = (forall x. m x -> IO x)
-> RPC QueryService "readUtxos"
-> UnaryHandler m ReadUtxosRequest ReadUtxosResponse
-> Maybe (UtxorpcServiceLogger m)
-> ServiceHandler
forall (m :: * -> *) r i o.
(MonadIO m, GRPCInput r i, GRPCOutput r o, Show i, Show o) =>
(forall x. m x -> IO x)
-> r
-> UnaryHandler m i o
-> Maybe (UtxorpcServiceLogger m)
-> ServiceHandler
loggedUnary m x -> IO x
forall x. m x -> IO x
f (RPC QueryService "readUtxos"
forall s (m :: Symbol). RPC s m
RPC :: RPC QueryService "readUtxos") UnaryHandler m ReadUtxosRequest ReadUtxosResponse
readUtxos Maybe (UtxorpcServiceLogger m)
logger
    searchUtxosSH :: ServiceHandler
searchUtxosSH = (forall x. m x -> IO x)
-> RPC QueryService "searchUtxos"
-> UnaryHandler m SearchUtxosRequest SearchUtxosResponse
-> Maybe (UtxorpcServiceLogger m)
-> ServiceHandler
forall (m :: * -> *) r i o.
(MonadIO m, GRPCInput r i, GRPCOutput r o, Show i, Show o) =>
(forall x. m x -> IO x)
-> r
-> UnaryHandler m i o
-> Maybe (UtxorpcServiceLogger m)
-> ServiceHandler
loggedUnary m x -> IO x
forall x. m x -> IO x
f (RPC QueryService "searchUtxos"
forall s (m :: Symbol). RPC s m
RPC :: RPC QueryService "searchUtxos") UnaryHandler m SearchUtxosRequest SearchUtxosResponse
searchUtxos Maybe (UtxorpcServiceLogger m)
logger
    readGenesisSH :: ServiceHandler
readGenesisSH = (forall x. m x -> IO x)
-> RPC QueryService "readGenesis"
-> UnaryHandler m ReadGenesisRequest ReadGenesisResponse
-> Maybe (UtxorpcServiceLogger m)
-> ServiceHandler
forall (m :: * -> *) r i o.
(MonadIO m, GRPCInput r i, GRPCOutput r o, Show i, Show o) =>
(forall x. m x -> IO x)
-> r
-> UnaryHandler m i o
-> Maybe (UtxorpcServiceLogger m)
-> ServiceHandler
loggedUnary m x -> IO x
forall x. m x -> IO x
f (RPC QueryService "readGenesis"
forall s (m :: Symbol). RPC s m
RPC :: RPC QueryService "readGenesis") UnaryHandler m ReadGenesisRequest ReadGenesisResponse
readGenesis Maybe (UtxorpcServiceLogger m)
logger
    readEraSummarySH :: ServiceHandler
readEraSummarySH = (forall x. m x -> IO x)
-> RPC QueryService "readEraSummary"
-> UnaryHandler m ReadEraSummaryRequest ReadEraSummaryResponse
-> Maybe (UtxorpcServiceLogger m)
-> ServiceHandler
forall (m :: * -> *) r i o.
(MonadIO m, GRPCInput r i, GRPCOutput r o, Show i, Show o) =>
(forall x. m x -> IO x)
-> r
-> UnaryHandler m i o
-> Maybe (UtxorpcServiceLogger m)
-> ServiceHandler
loggedUnary m x -> IO x
forall x. m x -> IO x
f (RPC QueryService "readEraSummary"
forall s (m :: Symbol). RPC s m
RPC :: RPC QueryService "readEraSummary") UnaryHandler m ReadEraSummaryRequest ReadEraSummaryResponse
readEraSummary Maybe (UtxorpcServiceLogger m)
logger