From 841fb7eb29857cedff06455554ca262697b1b3a4 Mon Sep 17 00:00:00 2001 From: s-r-x Date: Tue, 27 Jul 2021 10:27:02 +0500 Subject: [PATCH] feat(gql): processingTime Job field --- packages/root/src/gql/data-sources/bull/index.ts | 4 ++++ packages/root/src/gql/resolvers/job.ts | 3 +++ packages/root/src/gql/type-defs/job.ts | 1 + packages/root/src/typings/gql.ts | 2 ++ 4 files changed, 10 insertions(+) diff --git a/packages/root/src/gql/data-sources/bull/index.ts b/packages/root/src/gql/data-sources/bull/index.ts index d6fd0e6..15888d8 100755 --- a/packages/root/src/gql/data-sources/bull/index.ts +++ b/packages/root/src/gql/data-sources/bull/index.ts @@ -144,6 +144,10 @@ export class BullDataSource extends DataSource { } return job; } + extractJobProcessingTime(job: Job): number { + if (!job.processedOn || !job.finishedOn) return 0; + return job.finishedOn - job.processedOn; + } async getJobLogs(queueName: string, id: number) { const queue = this.getQueueByName(queueName, true); return await queue?.getJobLogs(id); diff --git a/packages/root/src/gql/resolvers/job.ts b/packages/root/src/gql/resolvers/job.ts index 75dc781..f63a13f 100644 --- a/packages/root/src/gql/resolvers/job.ts +++ b/packages/root/src/gql/resolvers/job.ts @@ -18,6 +18,9 @@ export const JobResolver: TResolvers = { delay({ opts }: BullJob) { return opts.delay; }, + processingTime(job: BullJob, _vars, { dataSources: { bull } }) { + return bull.extractJobProcessingTime(job); + }, logs(job: BullJob, _vars, { dataSources: { bull } }) { return bull.getJobLogs(job.queue.name, job.id as number); }, diff --git a/packages/root/src/gql/type-defs/job.ts b/packages/root/src/gql/type-defs/job.ts index 91be3e5..c2d83ba 100755 --- a/packages/root/src/gql/type-defs/job.ts +++ b/packages/root/src/gql/type-defs/job.ts @@ -37,6 +37,7 @@ export const jobTypeDef = gql` timestamp: Float! finishedOn: Float processedOn: Float + processingTime: Float opts: String! } `; diff --git a/packages/root/src/typings/gql.ts b/packages/root/src/typings/gql.ts index 4ef7829..3c7a512 100755 --- a/packages/root/src/typings/gql.ts +++ b/packages/root/src/typings/gql.ts @@ -43,6 +43,7 @@ export type Job = { timestamp: Scalars['Float']; finishedOn?: Maybe; processedOn?: Maybe; + processingTime?: Maybe; opts: Scalars['String']; }; @@ -270,6 +271,7 @@ export type QueryJobArgs = { export type Queue = { name: Scalars['String']; + keyPrefix?: Maybe; /** https://github.com/OptimalBits/bull/blob/develop/REFERENCE.md#queuecount */ count: Scalars['Int']; /** https://github.com/OptimalBits/bull/blob/develop/REFERENCE.md#queuegetjobcounts */