@@ -553,6 +553,8 @@ findJobByIdIO conn tname jid = PGS.query conn (findJobByIdQuery tname) (Only jid
553553saveJobQuery :: TableName -> PGS.Query
554554saveJobQuery tname = "UPDATE " <> tname <> " set run_at = ?, status = ?, payload = ?, last_error = ?, attempts = ?, locked_at = ?, locked_by = ? WHERE id = ? RETURNING " <> concatJobDbColumns
555555
556+deleteJobQuery :: TableName -> PGS.Query
557+deleteJobQuery tname = "delete " <> tname <> " Where id = ?"
556558
557559saveJob :: (HasJobRunner m) => Job -> m Job
558560saveJob j = do
@@ -576,6 +578,15 @@ saveJobIO conn tname Job{jobRunAt, jobStatus, jobPayload, jobLastError, jobAttem
576578 [j] -> pure j
577579 js -> Prelude.error $ "Not expecting multiple rows to ber returned when updating job id=" <> (show jobId)
578580
581+deleteJob :: (HasJobRunner m) => JobId -> m ()
582+deleteJob jid = do
583+ tname <- getTableName
584+ withDbConnection $ \conn -> liftIO $ deleteJobIO conn tname jid
585+
586+deleteJobIO :: Connection -> TableName -> JobId -> IO ()
587+deleteJobIO conn tname jid = do
588+ void $ PGS.execute conn (deleteJobQuery tname) (Only jid)
589+
579590data TimeoutException = TimeoutException deriving (Eq, Show)
580591instance Exception TimeoutException
581592
@@ -613,7 +624,8 @@ runJob jid = do
613624 (flip catches) [Handler $ timeoutHandler job startTime, Handler $ exceptionHandler job startTime] $ do
614625 runJobWithTimeout lockTimeout job
615626 endTime <- liftIO getCurrentTime
616− newJob <- saveJob job{jobStatus=Success, jobLockedBy=Nothing, jobLockedAt=Nothing}
627+ deleteJob jid
628+ let newJob = job{jobStatus=Success, jobLockedBy=Nothing, jobLockedAt=Nothing}
617629 log LevelInfo $ LogJobSuccess newJob (diffUTCTime endTime startTime)
618630 onJobSuccess newJob
619631 pure ()