module Yesod.JobQueue.Scheduler where
import Yesod.JobQueue
import Yesod.JobQueue.Types
import System.Cron.Schedule
import qualified Prelude as P
import ClassyPrelude.Yesod
import qualified Data.Text as T (pack)
class (YesodJobQueue master) => YesodJobQueueScheduler master where
getJobSchedules :: master -> [(String, JobType master)]
startJobSchedule :: (MonadBaseControl IO m, MonadIO m) => master -> m ()
startJobSchedule master = do
let add (s, jt) = addJob (enqueue master jt) s
tids <- liftIO $ execSchedule $ mapM_ add $ getJobSchedules master
print tids
schedulerInfo :: YesodJobQueueScheduler master => master -> JobQueueClassInfo
schedulerInfo m = JobQueueClassInfo "Scheduler" $ map (T.pack . showSchedule) $ getJobSchedules m
where showSchedule (s, jt) = s ++ " | " ++ (show jt)