module Ingest.Service
  ( IngestStatus(..)
  , Ingest(..)
  , initIngest
  ) where

import Control.Concurrent (ThreadId)
import Control.Concurrent.MVar (MVar, newMVar)
import Data.Int (Int32)
import qualified Data.Text as T

data IngestStatus
  = IngestInactive
  | IngestActive ThreadId
  | IngestCompleted [Int32]
  | IngestFailed [T.Text]

newtype Ingest = Ingest
  { ingestStatus :: MVar IngestStatus
  }

initIngest :: IO Ingest
initIngest = Ingest <$> newMVar IngestInactive