Update README.md
[gargantext.git] / src / Gargantext / API / Job.hs
index 1dceb151590fd5ee8c0a3bbfec88e88c9a017678..d0da5e7f8c90df764043ee613805e4b161add2dd 100644 (file)
@@ -3,6 +3,7 @@ module Gargantext.API.Job where
 import Control.Lens (over, _Just)
 import Data.IORef
 import Data.Maybe
+import qualified Data.Text as T
 
 import Gargantext.Prelude
 
@@ -16,6 +17,14 @@ jobLogInit rem =
          , _scst_failed = Just 0
          , _scst_events = Just [] }
 
+addEvent :: T.Text -> T.Text -> JobLog -> JobLog
+addEvent level message (JobLog { _scst_events = mEvts, .. }) = JobLog { _scst_events = Just (evts <> [ newEvt ]), .. }
+  where
+    evts = fromMaybe [] mEvts
+    newEvt = ScraperEvent { _scev_message = Just message
+                          , _scev_level = Just level
+                          , _scev_date = Nothing }
+
 jobLogSuccess :: JobLog -> JobLog
 jobLogSuccess jl = over (scst_succeeded . _Just) (+ 1) $
                    over (scst_remaining . _Just) (\x -> x - 1) jl
@@ -38,6 +47,9 @@ jobLogFailTotal (JobLog { _scst_succeeded = mSucc
       Nothing -> (Nothing, mFail)
       Just rem -> (Just 0, (+ rem) <$> mFail)
 
+jobLogFailTotalWithMessage :: T.Text -> JobLog -> JobLog
+jobLogFailTotalWithMessage message jl = addEvent "ERROR" message $ jobLogFailTotal jl
+
 jobLogEvt :: JobLog -> ScraperEvent -> JobLog
 jobLogEvt jl evt = over (scst_events . _Just) (\evts -> (evt:evts)) jl