Skip to content

Commit e74918d

Browse files
Deduplicate queryCurrentEraExpr calls
1 parent a2041e2 commit e74918d

File tree

1 file changed

+26
-27
lines changed

1 file changed

+26
-27
lines changed

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

Lines changed: 26 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,23 @@ 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+
(forall era. ShelleyBasedEra era -> LocalStateQueryExpr b p QueryInMode r IO a) ->
254+
LocalStateQueryExpr b p QueryInMode r IO a
255+
queryForCurrentEraInShelleyBasedEraExpr = queryForCurrentEraInEonExpr (throwIO . QueryNotShelleyBasedEraException)
253256

254257
-- | Query the whole UTxO from node at given point. Useful for debugging, but
255258
-- should obviously not be used in production code.
@@ -264,10 +267,8 @@ queryUTxOWhole ::
264267
IO UTxO
265268
queryUTxOWhole networkId socket queryPoint = do
266269
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
270+
queryForCurrentEraInShelleyBasedEraExpr
271+
(fmap UTxO.fromApi . flip queryInShelleyBasedEraExpr (QueryUTxO QueryUTxOWhole))
271272

272273
-- | Query UTxO for the address of given verification key at point.
273274
--
@@ -292,9 +293,7 @@ queryStakePools ::
292293
IO (Set PoolId)
293294
queryStakePools networkId socket queryPoint =
294295
runQueryExpr networkId socket queryPoint $ do
295-
(AnyCardanoEra era) <- queryCurrentEraExpr
296-
(sbe :: ShelleyBasedEra e) <- liftIO $ assumeShelleyBasedEraOrThrow era
297-
queryInShelleyBasedEraExpr sbe QueryStakePools
296+
queryForCurrentEraInShelleyBasedEraExpr (`queryInShelleyBasedEraExpr` QueryStakePools)
298297

299298
-- * Helpers
300299

0 commit comments

Comments
 (0)