module Model.Job ( getLastExecution , actualizeLastExecution , actualizeLastCheck ) 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) (Just now)) >> return () actualizeLastCheck :: JobKind -> Persist () actualizeLastCheck kind = do now <- liftIO getCurrentTime updateWhere [JobKind ==. kind] [JobLastCheck =. Just now]