Skip to content

Commit d64168c

Browse files
authored
Use an effect for Prometheus (#847)
1 parent 437e7fe commit d64168c

File tree

13 files changed

+148
-171
lines changed

13 files changed

+148
-171
lines changed

app/cli/Main.hs

+20-25
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import Effectful.Fail
1717
import Effectful.FileSystem
1818
import Effectful.Log (Log, runLog)
1919
import Effectful.PostgreSQL.Transact.Effect
20-
import Effectful.Reader.Static (Reader)
20+
import Effectful.Prometheus
2121
import Effectful.Reader.Static qualified as Reader
2222
import Effectful.State.Static.Shared (State)
2323
import Effectful.State.Static.Shared qualified as State
@@ -26,7 +26,6 @@ import Effectful.Trace (Trace)
2626
import Effectful.Trace qualified as Trace
2727
import GHC.Conc
2828
import GHC.Generics (Generic)
29-
import GHC.Records
3029
import Log qualified
3130
import Log.Backend.StandardOutput qualified as Log
3231
import Monitor.Tracing.Zipkin (Zipkin (..))
@@ -97,23 +96,25 @@ main = Log.withStdOutLogger $ \logger -> do
9796
pure $ Trace.runTrace zipkin.zipkinTracer
9897
else pure Trace.runNoTrace
9998
result <-
100-
runEff
101-
. runTrace
102-
. runErrorNoCallStack
103-
. State.evalState (mempty @(Set (Namespace, PackageName, Version)))
104-
. withUnliftStrategy (ConcUnlift Ephemeral Unlimited)
105-
. runDB env.pool
106-
. runFailIO
107-
. runTime
108-
. runPoolboy (poolboySettingsWith capabilities)
109-
. ( case env.features.blobStoreImpl of
99+
runOptions cliArgs
100+
& Reader.runReader env
101+
& runLog "flora-cli" logger Log.LogTrace
102+
& runFileSystem
103+
& ( case env.features.blobStoreImpl of
110104
Just (BlobStoreFS fp) -> runBlobStoreFS fp
111105
_ -> runBlobStorePure
112106
)
113-
. runFileSystem
114-
. runLog "flora-cli" logger Log.LogTrace
115-
. Reader.runReader env
116-
$ runOptions cliArgs
107+
& runPoolboy (poolboySettingsWith capabilities)
108+
& runTime
109+
& runFailIO
110+
& runDB env.pool
111+
& withUnliftStrategy (ConcUnlift Ephemeral Unlimited)
112+
& State.evalState (mempty @(Set (Namespace, PackageName, Version)))
113+
& runErrorNoCallStack
114+
& runTrace
115+
& runPrometheusMetrics env.metrics
116+
& runEff
117+
117118
case result of
118119
Right _ -> pure ()
119120
Left errors ->
@@ -195,12 +196,10 @@ runOptions
195196
, Error (NonEmpty AdvisoryImportError) :> es
196197
, Fail :> es
197198
, FileSystem :> es
198-
, HasField "metrics" r Metrics
199-
, HasField "mltp" r MLTP
200199
, IOE :> es
201200
, Log :> es
201+
, Metrics AppMetrics :> es
202202
, Poolboy :> es
203-
, Reader r :> es
204203
, State (Set (Namespace, PackageName, Version)) :> es
205204
, Time :> es
206205
, Trace :> es
@@ -248,12 +247,10 @@ provisionRepository name url description = Update.upsertPackageIndex name url de
248247
importFolderOfCabalFiles
249248
:: ( DB :> es
250249
, FileSystem :> es
251-
, HasField "metrics" r Metrics
252-
, HasField "mltp" r MLTP
253250
, IOE :> es
254251
, Log :> es
252+
, Metrics AppMetrics :> es
255253
, Poolboy :> es
256-
, Reader r :> es
257254
, State (Set (Namespace, PackageName, Version)) :> es
258255
, Time :> es
259256
)
@@ -270,12 +267,10 @@ importFolderOfCabalFiles path repository = do
270267

271268
importIndex
272269
:: ( DB :> es
273-
, HasField "metrics" r Metrics
274-
, HasField "mltp" r MLTP
275270
, IOE :> es
276271
, Log :> es
272+
, Metrics AppMetrics :> es
277273
, Poolboy :> es
278-
, Reader r :> es
279274
, State (Set (Namespace, PackageName, Version)) :> es
280275
, Time :> es
281276
)

cabal.project

+6-1
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,18 @@ source-repository-package
7575
source-repository-package
7676
type: git
7777
location: https://github.com/kleidukos/pg-transact-effectful
78-
tag: 0f3de0516cb66efbfa6c437ef77c2774bd1325cb
78+
tag: ea610e9d85a628a19d350397b9e43520e452b4f8
7979

8080
source-repository-package
8181
type: git
8282
location: https://github.com/kleidukos/servant-effectful
8383
tag: 22af09642078d5296b524495ad8213bf2ace62d2
8484

85+
source-repository-package
86+
type: git
87+
location: https://github.com/haskell-effectful/prometheus-effectful
88+
tag: cd362b4f0a9f1a7dcc743176a9fa663f2cfe33d3
89+
8590
source-repository-package
8691
type: git
8792
location: https://github.com/saurabhnanda/odd-jobs

0 commit comments

Comments
 (0)