Skip to content

Commit 94b6287

Browse files
Deduplicate queryCurrentEraExpr calls
1 parent 9a5ad52 commit 94b6287

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 :: ToJSON a => CardanoEra era -> a -> IO (PParams LedgerEra)
187184
encodeToEra eraToEncode pparams =
@@ -212,19 +209,16 @@ queryGenesisParameters ::
212209
IO (GenesisParameters ShelleyEra)
213210
queryGenesisParameters networkId socket queryPoint =
214211
runQueryExpr networkId socket queryPoint $ do
215-
(AnyCardanoEra era) <- queryCurrentEraExpr
216-
sbe <- liftIO $ assumeShelleyBasedEraOrThrow era
217-
queryInShelleyBasedEraExpr sbe QueryGenesisParameters
212+
queryForCurrentEraInShelleyBasedEraExpr (`queryInShelleyBasedEraExpr` QueryGenesisParameters)
218213

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

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

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

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

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

300300
-- * Helpers
301301

0 commit comments

Comments
 (0)