packages feed

yesod-job-queue-0.1.0.1: Yesod/JobQueue/Scheduler.hs

module Yesod.JobQueue.Scheduler where

import Yesod.JobQueue
import System.Cron.Schedule

import qualified Prelude as P
import ClassyPrelude.Yesod

class (YesodJobQueue master) => YesodJobQueueScheduler master where
    -- | job schedules
    getJobSchedules :: master -> [(String, JobType master)]

    -- | start schedule
    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