From 66f73131add871162e4f30962c20f087759f7137 Mon Sep 17 00:00:00 2001 From: Dobromir Nikolov Date: Mon, 25 Jul 2022 15:20:23 +0300 Subject: [PATCH] Add MonadTrans instance to ScheduleT, add jobsToSchedule utility. --- src/System/Cron/Schedule.hs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/System/Cron/Schedule.hs b/src/System/Cron/Schedule.hs index 3a93a0b..eee7b84 100644 --- a/src/System/Cron/Schedule.hs +++ b/src/System/Cron/Schedule.hs @@ -41,6 +41,7 @@ module System.Cron.Schedule , runScheduleT , execSchedule + , jobsToSchedule ) where @@ -93,6 +94,8 @@ newtype ScheduleT m a = ScheduleT { unSchedule :: StateT Jobs (ExceptT ScheduleE , MonadError ScheduleError ) +instance MonadTrans ScheduleT where + lift = ScheduleT . lift . lift ------------------------------------------------------------------------------- runSchedule :: Schedule a -> Either ScheduleError (a, [Job]) @@ -119,6 +122,10 @@ instance (Monad m) => MonadSchedule (ScheduleT m) where -- Monitoring engine ------------------------------------------------------------------------------- +-- | Utility function to initialize a schedule from a set of jobs. +jobsToSchedule :: [Job] -> Schedule () +jobsToSchedule jobs = forM_ jobs $ \(Job schedule action) -> do + addJob action (serializeCronSchedule schedule) -- | Schedule all of the jobs to run at appropriate intervals. Each -- job that is launched gets a scheduling thread to itself. Each