From 53afb9c96904ab226ccee754419569da16c59871 Mon Sep 17 00:00:00 2001 From: Joris Date: Sun, 6 Sep 2015 23:25:44 +0200 Subject: Setting up the monthly job --- src/server/Model/Job.hs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/server/Model/Job.hs (limited to 'src/server/Model/Job.hs') diff --git a/src/server/Model/Job.hs b/src/server/Model/Job.hs new file mode 100644 index 0000000..3d5df96 --- /dev/null +++ b/src/server/Model/Job.hs @@ -0,0 +1,27 @@ +module Model.Job + ( getLastExecution + , actualizeLastExecution + ) where + +import Control.Monad.IO.Class (liftIO) + +import Data.Time.Clock (UTCTime, getCurrentTime) +import Data.Maybe (isJust) + +import Database.Persist + +import Model.Database +import Model.JobKind + +getLastExecution :: JobKind -> Persist (Maybe UTCTime) +getLastExecution kind = do + mbJob <- fmap entityVal <$> selectFirst [JobKind ==. kind] [] + return (mbJob >>= jobLastExecution) + +actualizeLastExecution :: JobKind -> Persist () +actualizeLastExecution kind = do + now <- liftIO getCurrentTime + jobKindDefined <- isJust <$> selectFirst [JobKind ==. kind] [] + if jobKindDefined + then updateWhere [JobKind ==. kind] [JobLastExecution =. Just now] + else insert (Job kind (Just now)) >> return () -- cgit v1.2.3