1 module Databrary.Ingest.Service
    2   ( IngestStatus(..)
    3   , Ingest(..)
    4   , initIngest
    5   ) where
    6 
    7 import Control.Concurrent (ThreadId)
    8 import Control.Concurrent.MVar (MVar, newMVar)
    9 import Data.Int (Int32)
   10 import qualified Data.Text as T
   11 
   12 data IngestStatus
   13   = IngestInactive
   14   | IngestActive ThreadId
   15   | IngestCompleted [Int32]
   16   | IngestFailed [T.Text]
   17 
   18 newtype Ingest = Ingest
   19   { ingestStatus :: MVar IngestStatus
   20   }
   21 
   22 initIngest :: IO Ingest
   23 initIngest = Ingest <$> newMVar IngestInactive
   24