Skip to content

Commit 9a71fa6

Browse files
chore: wip
1 parent 5163625 commit 9a71fa6

File tree

4 files changed

+36
-6
lines changed

4 files changed

+36
-6
lines changed

storage/framework/core/buddy/src/cli.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ async function main() {
6565
cmd.make(buddy)
6666
cmd.migrate(buddy)
6767
cmd.outdated(buddy)
68+
cmd.queue(buddy)
6869
cmd.release(buddy)
6970
cmd.route(buddy)
7071
cmd.saas(buddy)

storage/framework/core/queue/src/job.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ export interface JobOptions {
4040
}
4141

4242
export async function runJob(name: string, options: JobOptions = {}): Promise<void> {
43-
log.info(`Running job: ${name}`)
44-
4543
try {
4644
const jobModule = await import(appPath(`Jobs/${name}.ts`))
4745
const job = jobModule.default as JobConfig
Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,40 @@
1-
import { Job } from "../../../orm/src/models/Job";
1+
import { log } from '@stacksjs/logging'
2+
import { Job } from "../../../orm/src/models/Job"
3+
import { runJob } from "./job"
4+
5+
interface QueuePayload {
6+
displayName: string,
7+
name: string,
8+
maxTries: number,
9+
timeOut: number | null,
10+
timeOutAt: Date | null
11+
}
212

313
export async function processJobs(): Promise<void> {
414
const jobs = await Job.all()
515

616
for (const job of jobs) {
7-
console.log(job)
17+
if (job.payload) {
18+
const payload: QueuePayload = JSON.parse(job.payload)
19+
const currentAttempts = job.attempts || 0
20+
log.info(`Running ${payload.displayName}`)
21+
22+
job.update({attempts: currentAttempts + 1 })
23+
24+
try {
25+
await runJob(payload.name, {
26+
queue: job.queue,
27+
payload: {},
28+
context: '',
29+
maxTries: payload.maxTries,
30+
timeout: 60,
31+
})
32+
} catch (error) {
33+
log.info(`${payload.displayName} failed`)
34+
log.error(error)
35+
}
36+
37+
log.info(`Successfully ran ${payload.displayName}`)
38+
}
839
}
9-
}
40+
}

storage/framework/core/queue/src/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import type { JobOptions } from "./job"
2-
import process from 'node:process'
32
import Job from "../../../orm/src/models/Job"
43

54
export async function storeJob(name: string, options: JobOptions): Promise<void> {
65
const payloadJson = JSON.stringify({
76
displayName: `app/Jobs/${name}.ts`,
7+
name,
88
maxTries: options.tries || 1,
99
timeout: null,
1010
timeoutAt: null

0 commit comments

Comments
 (0)