aboutsummaryrefslogtreecommitdiff
path: root/server/src/Job/Model.hs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/Job/Model.hs')
-rw-r--r--server/src/Job/Model.hs14
1 files changed, 9 insertions, 5 deletions
diff --git a/server/src/Job/Model.hs b/server/src/Job/Model.hs
index a5fa62b..1dd6c63 100644
--- a/server/src/Job/Model.hs
+++ b/server/src/Job/Model.hs
@@ -5,7 +5,6 @@ module Job.Model
, actualizeLastCheck
) where
-import Data.Maybe (isJust)
import Data.Time.Clock (UTCTime, getCurrentTime)
import Database.SQLite.Simple (Only (Only))
import qualified Database.SQLite.Simple as SQLite
@@ -24,15 +23,20 @@ data Job = Job
getLastExecution :: Kind -> Query (Maybe UTCTime)
getLastExecution jobKind =
Query (\conn -> do
- [Only time] <- SQLite.query conn "SELECT last_execution FROM job WHERE kind = ?" (Only jobKind) :: IO [Only (Maybe UTCTime)]
- return time
+ result <- SQLite.query conn "SELECT last_execution FROM job WHERE kind = ?" (Only jobKind) :: IO [Only UTCTime]
+ return $ case result of
+ [Only time] -> Just time
+ _ -> Nothing
)
actualizeLastExecution :: Kind -> UTCTime -> Query ()
actualizeLastExecution jobKind time =
Query (\conn -> do
- [Only result] <- SQLite.query conn "SELECT 1 FROM job WHERE kind = ?" (Only jobKind) :: IO [Only (Maybe Int)]
- if isJust result
+ result <- SQLite.query conn "SELECT 1 FROM job WHERE kind = ?" (Only jobKind) :: IO [Only Int]
+ let hasJob = case result of
+ [Only _] -> True
+ _ -> False
+ if hasJob
then SQLite.execute conn "UPDATE job SET last_execution = ? WHERE kind = ?" (time, jobKind)
else SQLite.execute conn "INSERT INTO job (kind, last_execution, last_check) VALUES (?, ?, ?)" (jobKind, time, time)
)