@@ -23,7 +23,6 @@ public function __construct(protected QueueConfig $config)
2323 {
2424 $ connection = db_connect ($ config ->database ['dbGroup ' ], $ config ->database ['getShared ' ]);
2525 $ this ->jobModel = model (QueueJobModel::class, true , $ connection );
26- $ this ->jobModel ->setTable ($ config ->database ['table ' ]);
2726 }
2827
2928 /**
@@ -55,7 +54,17 @@ public function push(string $queue, string $job, array $data): bool
5554 */
5655 public function pop (string $ queue ): ?QueueJob
5756 {
58- return $ this ->jobModel ->getFromQueue ($ queue );
57+ $ queueJob = $ this ->jobModel ->getFromQueue ($ queue );
58+
59+ if ($ queueJob === null ) {
60+ return null ;
61+ }
62+
63+ // Set the actual status as in DB.
64+ $ queueJob ->status = Status::RESERVED ->value ;
65+ $ queueJob ->syncOriginal ();
66+
67+ return $ queueJob ;
5968 }
6069
6170 /**
@@ -96,11 +105,13 @@ public function failed(QueueJob $queueJob, Throwable $err, bool $keepJob): bool
96105
97106 /**
98107 * Change job status to DONE od delete it.
108+ *
109+ * @throws ReflectionException
99110 */
100111 public function done (QueueJob $ queueJob , bool $ keepJob ): bool
101112 {
102113 if ($ keepJob ) {
103- return $ this ->jobModel ->update ($ queueJob ->id , ['status ' => Status::DONE ]);
114+ return $ this ->jobModel ->update ($ queueJob ->id , ['status ' => Status::DONE -> value ]);
104115 }
105116
106117 return $ this ->jobModel ->delete ($ queueJob ->id );
@@ -120,6 +131,9 @@ public function clear(?string $queue = null): bool
120131
121132 /**
122133 * Retry failed job.
134+ * ∂
135+ *
136+ * @throws ReflectionException
123137 */
124138 public function retry (?int $ id , ?string $ queue ): int
125139 {
@@ -145,17 +159,24 @@ public function retry(?int $id, ?string $queue): int
145159 /**
146160 * Delete failed job by ID.
147161 */
148- public function forget (int $ id, bool $ affectedRows = false ): bool
162+ public function forget (int $ id ): bool
149163 {
150- return model (QueueJobFailedModel::class)->delete ($ id )
151- && (! $ affectedRows || model (QueueJobFailedModel::class)->affectedRows () > 0 );
164+ if (model (QueueJobFailedModel::class)->delete ($ id )) {
165+ return model (QueueJobFailedModel::class)->affectedRows () > 0 ;
166+ }
167+
168+ return false ;
152169 }
153170
154171 /**
155172 * Delete many failed jobs at once.
156173 */
157174 public function flush (?int $ hours , ?string $ queue ): bool
158175 {
176+ if ($ hours === null && $ queue === null ) {
177+ return model (QueueJobFailedModel::class)->truncate ();
178+ }
179+
159180 return model (QueueJobFailedModel::class)
160181 ->when (
161182 $ hours !== null ,
0 commit comments