Skip to content

Commit 10371de

Browse files
committed
Evaluation job operates in the MonadUnliftIO m instead of IO
1 parent 6abb6c6 commit 10371de

File tree

3 files changed

+19
-9
lines changed

3 files changed

+19
-9
lines changed

plutus-script-evaluation/lib/Database/Query.hs

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module Database.Query where
22

33
import Cardano.Slotting.Slot (SlotNo)
4+
import Control.Monad.IO.Unlift (MonadUnliftIO, withRunInIO)
45
import Data.Profunctor.Product.Default (Default)
56
import Database.Orphans ()
67
import Database.PostgreSQL.Simple (Connection)
@@ -92,13 +93,16 @@ selectSerialisedScriptsBatch conn count =
9293
pure serialised
9394

9495
withScriptEvaluationEvents
95-
:: Connection
96+
:: (MonadUnliftIO m)
97+
=> Connection
9698
-> a
97-
-> (a -> ScriptEvaluationRecord -> IO a)
98-
-> IO a
99+
-> (a -> ScriptEvaluationRecord -> m a)
100+
-> m a
99101
withScriptEvaluationEvents conn a f = do
100102
let select = selectTable scriptEvaluations
101-
runSelectFold conn select a f
103+
withRunInIO \runInIO ->
104+
runSelectFold conn select a \accum record ->
105+
runInIO (f accum record)
102106

103107
insertScriptEvaluationEvents
104108
:: (Default ToFields EvaluationEventRecord WriteEvaluationEventRecordFields)

plutus-script-evaluation/lib/Evaluate.hs

+8-4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
module Evaluate where
44

55
import Codec.Serialise (deserialise)
6+
import Control.Monad.IO.Unlift (MonadUnliftIO)
67
import Control.Monad.Trans.Except (runExceptT)
78
import Control.Monad.Trans.Writer (WriterT (runWriterT))
89
import Data.ByteString qualified as BSL
@@ -35,20 +36,23 @@ data ScriptEvaluationInput = MkScriptEvaluationInput
3536
}
3637

3738
evaluateScripts
38-
:: Postgres.Connection
39+
:: (MonadFail m, MonadUnliftIO m)
40+
=> Postgres.Connection
3941
-- ^ Database connection
4042
-> a
4143
-- ^ Initial accumulator
42-
-> (ScriptEvaluationInput -> a -> IO a)
44+
-> (ScriptEvaluationInput -> a -> m a)
4345
-- ^ Accumulation function
44-
-> IO a
46+
-> m a
4547
evaluateScripts conn initialAccum accumulate =
4648
Db.withScriptEvaluationEvents conn initialAccum \accum record -> do
4749
scriptInput <- inputFromRecord record
4850
accumulate scriptInput accum
4951

5052
inputFromRecord
51-
:: (MonadFail m) => Db.ScriptEvaluationRecord -> m ScriptEvaluationInput
53+
:: (MonadFail m)
54+
=> Db.ScriptEvaluationRecord
55+
-> m ScriptEvaluationInput
5256
inputFromRecord MkScriptEvaluationRecord'{..} = do
5357
let mkEvalCtx f =
5458
runExceptT (runWriterT f) >>= \case

plutus-script-evaluation/plutus-script-evaluation.cabal

+3-1
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ library
110110
, string-interpolate ^>=0.3
111111
, text
112112
, transformers
113+
, unliftio-core
113114
, vector
114115

115116
executable dump-script-events
@@ -158,5 +159,6 @@ executable evaluate-scripts
158159
ghc-options: -threaded -rtsopts
159160
other-modules: Options
160161
build-depends:
161-
, cardano-api ^>=10.4
162+
, cardano-api ^>=10.4
162163
, text
164+
, unliftio-core

0 commit comments

Comments
 (0)