diff options
Diffstat (limited to 'src/server/Model/Job.hs')
-rw-r--r-- | src/server/Model/Job.hs | 27 |
1 files changed, 27 insertions, 0 deletions
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 () |