@@ -41,6 +41,7 @@ scheduleTaskQuery task = do
41 :* Set (param @2) `as` #payload
41 :* Set (param @2) `as` #payload
42 :* Default `as` #creation_time
42 :* Default `as` #creation_time
43 :* Default `as` #started
43 :* Default `as` #started
44+ :* Default `as` #failures
45 ( OnConflict
46 ( OnConflict
46 (OnConstraint #pk_task_payload)
47 (OnConstraint #pk_task_payload)
@@ -87,6 +88,7 @@ rescheduleTaskQuery payload = do
88 ( Default `as` #creation_time
89 ( Default `as` #creation_time
89 :* Default `as` #started
90 :* Default `as` #started
91+ :* Set (#failures + 1) `as` #failures
91 (param @1 .== #task .&& param @2 .== #payload)
93 (param @1 .== #task .&& param @2 .== #payload)
92 dbWrite (const $ return ()) $
94 dbWrite (const $ return ()) $
@@ -112,6 +114,7 @@ pickTasksQuery tasks limitCount = do
112 ( from (table #tasks)
114 ( from (table #tasks)
113 & where_ (#task `in_` (literal <$> tasks))
115 & where_ (#task `in_` (literal <$> tasks))
114 & where_ (not_ . notNull $ #started)
116 & where_ (not_ . notNull $ #started)
117+ & where_ (#failures .< 20)
115 & orderBy [#creation_time & Asc]
118 & orderBy [#creation_time & Asc]
116 & limit limitCount
119 & limit limitCount
117 & orderBy [#creation_time & Desc]
120 & orderBy [#creation_time & Desc]