Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2/**
3 * Pop PHP Framework (http://www.popphp.org/)
4 *
5 * @link       https://github.com/popphp/popphp-framework
6 * @author     Nick Sagona, III <dev@nolainteractive.com>
7 * @copyright  Copyright (c) 2009-2024 NOLA Interactive, LLC. (http://www.nolainteractive.com)
8 * @license    http://www.popphp.org/license     New BSD License
9 */
10
11/**
12 * @namespace
13 */
14namespace Pop\Queue\Process;
15
16use Pop\Application;
17
18/**
19 * Job interface
20 *
21 * @category   Pop
22 * @package    Pop\Queue
23 * @author     Nick Sagona, III <dev@nolainteractive.com>
24 * @copyright  Copyright (c) 2009-2024 NOLA Interactive, LLC. (http://www.nolainteractive.com)
25 * @license    http://www.popphp.org/license     New BSD License
26 * @version    2.0.0
27 */
28interface JobInterface
29{
30
31    /**
32     * Generate job ID
33     *
34     * @return string
35     */
36    public function generateJobId(): string;
37
38    /**
39     * Set job ID
40     *
41     * @param  string $id
42     * @return JobInterface
43     */
44    public function setJobId(string $id): JobInterface;
45
46    /**
47     * Get job ID
48     *
49     * @return ?string
50     */
51    public function getJobId(): ?string;
52
53    /**
54     * Has job ID
55     *
56     * @return bool
57     */
58    public function hasJobId(): bool;
59
60    /**
61     * Set job description
62     *
63     * @param  string $description
64     * @return JobInterface
65     */
66    public function setJobDescription(string $description): JobInterface;
67
68    /**
69     * Get job description
70     *
71     * @return ?string
72     */
73    public function getJobDescription(): ?string;
74
75    /**
76     * Has job description
77     *
78     * @return bool
79     */
80    public function hasJobDescription(): bool;
81
82    /**
83     * Get job results
84     *
85     * @return mixed
86     */
87    public function getResults(): mixed;
88
89    /**
90     * Has job results
91     *
92     * @return bool
93     */
94    public function hasResults(): bool;
95
96    /**
97     * Set job callable
98     *
99     * @param  mixed $callable
100     * @param  mixed $params
101     * @return JobInterface
102     */
103    public function setCallable(mixed $callable, mixed $params = null): JobInterface;
104
105    /**
106     * Set job application command
107     *
108     * @param  string $command
109     * @return JobInterface
110     */
111    public function setCommand(string $command): JobInterface;
112
113    /**
114     * Set job CLI executable command
115     *
116     * @param  string $command
117     * @return JobInterface
118     */
119    public function setExec(string $command): JobInterface;
120
121    /**
122     * Get job callable
123     *
124     * @return mixed
125     */
126    public function getCallable(): mixed;
127
128    /**
129     * Get job application command
130     *
131     * @return ?string
132     */
133    public function getCommand(): ?string;
134
135    /**
136     * Get job CLI executable command
137     *
138     * @return ?string
139     */
140    public function getExec(): ?string;
141
142    /**
143     * Has job callable
144     *
145     * @return bool
146     */
147    public function hasCallable(): bool;
148
149    /**
150     * Has job application command
151     *
152     * @return bool
153     */
154    public function hasCommand(): bool;
155
156    /**
157     * Has job CLI executable command
158     *
159     * @return bool
160     */
161    public function hasExec(): bool;
162
163    /**
164     * Set max attempts
165     *
166     * @param  int $maxAttempts
167     * @return JobInterface
168     */
169    public function setMaxAttempts(int $maxAttempts): JobInterface;
170
171    /**
172     * Get max attempts
173     *
174     * @return int
175     */
176    public function getMaxAttempts(): int;
177
178    /**
179     * Has max attempts
180     *
181     * @return bool
182     */
183    public function hasMaxAttempts(): bool;
184
185    /**
186     * Is job set for only one max attempt
187     *
188     * @return bool
189     */
190    public function isAttemptOnce(): bool;
191
192    /**
193     * Get actual attempts
194     *
195     * @return int
196     */
197    public function getAttempts(): int;
198
199    /**
200     * Has actual attempts
201     *
202     * @return bool
203     */
204    public function hasAttempts(): bool;
205
206    /**
207     * Set the run until property
208     *
209     * @param  int|string $runUntil
210     * @return JobInterface
211     */
212    public function runUntil(int|string $runUntil): JobInterface;
213
214    /**
215     * Has run until
216     *
217     * @return bool
218     */
219    public function hasRunUntil(): bool;
220
221    /**
222     * Get run until value
223     *
224     * @return int|string|null
225     */
226    public function getRunUntil(): int|string|null;
227
228    /**
229     * Determine if the job has expired
230     *
231     * @return bool
232     */
233    public function isExpired(): bool;
234
235    /**
236     * Determine if the job has exceeded max attempts
237     *
238     * @return bool
239     */
240    public function hasExceededMaxAttempts(): bool;
241
242    /**
243     * Determine if the job is still valid
244     *
245     * @return bool
246     */
247    public function isValid(): bool;
248
249    /**
250     * Has job run yet
251     *
252     * @return bool
253     */
254    public function hasNotRun(): bool;
255
256    /**
257     * Start job
258     *
259     * @return JobInterface
260     */
261    public function start(): JobInterface;
262
263    /**
264     * Get started timestamp
265     *
266     * @return ?int
267     */
268    public function getStarted(): ?int;
269
270    /**
271     * Has job started
272     *
273     * @return bool
274     */
275    public function hasStarted(): bool;
276
277    /**
278     * Is job running and has not completed or failed yet
279     *
280     * @return bool
281     */
282    public function isRunning(): bool;
283
284    /**
285     * Complete job
286     *
287     * @return JobInterface
288     */
289    public function complete(): JobInterface;
290
291    /**
292     * Get completed timestamp
293     *
294     * @return ?int
295     */
296    public function getCompleted(): ?int;
297
298    /**
299     * Is job complete
300     *
301     * @return bool
302     */
303    public function isComplete(): bool;
304
305    /**
306     * Set job as failed
307     *
308     * @param  ?string $message
309     * @return AbstractJob
310     */
311    function failed(?string $message = null): JobInterface;
312
313    /**
314     * Has job failed
315     *
316     * @return bool
317     */
318    public function hasFailed(): bool;
319
320    /**
321     * Add failed message
322     *
323     * @param  string $message
324     * @return JobInterface
325     */
326    public function addFailedMessage(string $message): JobInterface;
327
328    /**
329     * Has failed messages
330     *
331     * @return bool
332     */
333    public function hasFailedMessages(): bool;
334
335    /**
336     * Get failed messages
337     *
338     * @return array
339     */
340    public function getFailedMessages(): array;
341
342    /**
343     * Get failed timestamp
344     *
345     * @return ?int
346     */
347    public function getFailed(): ?int;
348    
349    /**
350     * Run job
351     *
352     * @param  ?Application $application
353     * @return mixed
354     */
355    public function run(?Application $application = null): mixed;
356
357}