Skip to content

Commit 24f6528

Browse files
Deduplicate queryCurrentEraExpr calls
1 parent 92bcb58 commit 24f6528

File tree

1 file changed

+27
-27
lines changed

1 file changed

+27
-27
lines changed

hydra-node/src/Hydra/Chain/CardanoClient.hs

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -161,9 +161,7 @@ queryEpochNo ::
161161
IO EpochNo
162162
queryEpochNo networkId socket queryPoint = do
163163
runQueryExpr networkId socket queryPoint $ do
164-
(AnyCardanoEra era) <- queryCurrentEraExpr
165-
(sbe :: ShelleyBasedEra e) <- liftIO $ assumeShelleyBasedEraOrThrow era
166-
queryInShelleyBasedEraExpr sbe QueryEpoch
164+
queryForCurrentEraInShelleyBasedEraExpr (`queryInShelleyBasedEraExpr` QueryEpoch)
167165

168166
-- | Query the protocol parameters at given point and convert them to Babbage
169167
-- era protocol parameters.
@@ -178,10 +176,9 @@ queryProtocolParameters ::
178176
IO (PParams LedgerEra)
179177
queryProtocolParameters networkId socket queryPoint =
180178
runQueryExpr networkId socket queryPoint $ do
181-
(AnyCardanoEra era) <- queryCurrentEraExpr
182-
sbe <- liftIO $ assumeShelleyBasedEraOrThrow era
183-
eraPParams <- queryInShelleyBasedEraExpr sbe QueryProtocolParameters
184-
liftIO $ coercePParamsToLedgerEra era eraPParams
179+
queryForCurrentEraInShelleyBasedEraExpr $ \sbe -> do
180+
eraPParams <- queryInShelleyBasedEraExpr sbe QueryProtocolParameters
181+
liftIO $ coercePParamsToLedgerEra (convert sbe) eraPParams
185182
where
186183
encodeToEra eraToEncode pparams =
187184
case eitherDecode' (encode pparams) of
@@ -211,19 +208,16 @@ queryGenesisParameters ::
211208
IO (GenesisParameters ShelleyEra)
212209
queryGenesisParameters networkId socket queryPoint =
213210
runQueryExpr networkId socket queryPoint $ do
214-
(AnyCardanoEra era) <- queryCurrentEraExpr
215-
sbe <- liftIO $ assumeShelleyBasedEraOrThrow era
216-
queryInShelleyBasedEraExpr sbe QueryGenesisParameters
211+
queryForCurrentEraInShelleyBasedEraExpr (`queryInShelleyBasedEraExpr` QueryGenesisParameters)
217212

218213
-- | Query UTxO for all given addresses at given point.
219214
--
220215
-- Throws at least 'QueryException' if query fails.
221216
queryUTxO :: NetworkId -> SocketPath -> QueryPoint -> [Address ShelleyAddr] -> IO UTxO
222217
queryUTxO networkId socket queryPoint addresses =
223218
runQueryExpr networkId socket queryPoint $ do
224-
(AnyCardanoEra era) <- queryCurrentEraExpr
225-
sbe <- liftIO $ assumeShelleyBasedEraOrThrow era
226-
queryUTxOExpr sbe addresses
219+
queryForCurrentEraInShelleyBasedEraExpr
220+
(`queryUTxOExpr` addresses)
227221

228222
queryUTxOExpr :: ShelleyBasedEra era -> [Address ShelleyAddr] -> LocalStateQueryExpr b p QueryInMode r IO UTxO
229223
queryUTxOExpr sbe addresses = do
@@ -242,14 +236,24 @@ queryUTxOByTxIn ::
242236
[TxIn] ->
243237
IO UTxO
244238
queryUTxOByTxIn networkId socket queryPoint inputs =
245-
runQueryExpr networkId socket queryPoint $ do
246-
(AnyCardanoEra era) <- queryCurrentEraExpr
247-
(sbe :: ShelleyBasedEra e) <- liftIO $ assumeShelleyBasedEraOrThrow era
248-
eraUTxO <- queryInShelleyBasedEraExpr sbe $ QueryUTxO (QueryUTxOByTxIn (Set.fromList inputs))
249-
pure $ UTxO.fromApi eraUTxO
239+
runQueryExpr networkId socket queryPoint $
240+
queryForCurrentEraInShelleyBasedEraExpr
241+
(fmap UTxO.fromApi . flip queryInShelleyBasedEraExpr (QueryUTxO (QueryUTxOByTxIn (Set.fromList inputs))))
242+
243+
queryForCurrentEraInEonExpr ::
244+
Eon eon =>
245+
(AnyCardanoEra -> IO a) ->
246+
(forall era. eon era -> LocalStateQueryExpr b p QueryInMode r IO a) ->
247+
LocalStateQueryExpr b p QueryInMode r IO a
248+
queryForCurrentEraInEonExpr no yes = do
249+
k@(AnyCardanoEra era) <- queryCurrentEraExpr
250+
inEonForEra (liftIO $ no k) yes era
250251

251-
assumeShelleyBasedEraOrThrow :: MonadThrow m => CardanoEra era -> m (ShelleyBasedEra era)
252-
assumeShelleyBasedEraOrThrow era = inEonForEra (throwIO $ QueryNotShelleyBasedEraException $ anyCardanoEra era) pure era
252+
queryForCurrentEraInShelleyBasedEraExpr ::
253+
Eon eon =>
254+
(forall era. eon era -> LocalStateQueryExpr b p QueryInMode r IO a) ->
255+
LocalStateQueryExpr b p QueryInMode r IO a
256+
queryForCurrentEraInShelleyBasedEraExpr = queryForCurrentEraInEonExpr (throwIO . QueryNotShelleyBasedEraException)
253257

254258
-- | Query the whole UTxO from node at given point. Useful for debugging, but
255259
-- should obviously not be used in production code.
@@ -264,10 +268,8 @@ queryUTxOWhole ::
264268
IO UTxO
265269
queryUTxOWhole networkId socket queryPoint = do
266270
runQueryExpr networkId socket queryPoint $ do
267-
(AnyCardanoEra era) <- queryCurrentEraExpr
268-
(sbe :: ShelleyBasedEra e) <- liftIO $ assumeShelleyBasedEraOrThrow era
269-
eraUTxO <- queryInShelleyBasedEraExpr sbe $ QueryUTxO QueryUTxOWhole
270-
pure $ UTxO.fromApi eraUTxO
271+
queryForCurrentEraInShelleyBasedEraExpr
272+
(fmap UTxO.fromApi . flip queryInShelleyBasedEraExpr (QueryUTxO QueryUTxOWhole))
271273

272274
-- | Query UTxO for the address of given verification key at point.
273275
--
@@ -292,9 +294,7 @@ queryStakePools ::
292294
IO (Set PoolId)
293295
queryStakePools networkId socket queryPoint =
294296
runQueryExpr networkId socket queryPoint $ do
295-
(AnyCardanoEra era) <- queryCurrentEraExpr
296-
(sbe :: ShelleyBasedEra e) <- liftIO $ assumeShelleyBasedEraOrThrow era
297-
queryInShelleyBasedEraExpr sbe QueryStakePools
297+
queryForCurrentEraInShelleyBasedEraExpr (`queryInShelleyBasedEraExpr` QueryStakePools)
298298

299299
-- * Helpers
300300

0 commit comments

Comments
 (0)