{-# LANGUAGE ExistentialQuantification #-}
module Web.JobsUi.Types
( module Web.JobsUi.Types
, module Export
)
where
import qualified Data.Text as T
import Text.Digestive.Types as Export (Result(..))
data JobInfo a
= JobInfo
{ jiType :: T.Text
, jiInputs :: [Param]
, jiParams :: a -> [T.Text]
, jiConstructor :: [(T.Text, T.Text)] -> IO a
, jiExec :: a -> IO T.Text
, jiNotify :: a -> (Result T.Text T.Text) -> IO ()
}
data Param
= Param
{ paramDesc :: T.Text
, paramInputType :: ParamInputType
, paramValidation :: T.Text -> IO (Result T.Text T.Text)
}
data ParamInputType
= TextInput
| TextOptions (IO [T.Text])
data JobType
= forall a. JobType
{ getJobInfo :: JobInfo a
}