From 1c28045e8101d9863f9a8d59a04a8677a1df51c0 Mon Sep 17 00:00:00 2001 From: dejan-crocoder Date: Wed, 31 Jan 2024 16:37:26 +0100 Subject: [PATCH] reviewers are now optional since you can request teams as well as individuals --- .../functions/transform/src/merge-request-metrics.ts | 12 +++++++----- packages/schemas/extract/src/timeline-events.ts | 8 ++++---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/functions/transform/src/merge-request-metrics.ts b/packages/functions/transform/src/merge-request-metrics.ts index 415bc26ac..e831981af 100644 --- a/packages/functions/transform/src/merge-request-metrics.ts +++ b/packages/functions/transform/src/merge-request-metrics.ts @@ -846,14 +846,14 @@ async function selectForgeUsers(db: TransformDatabase, users: { key: K, userI break; case 'review_requested': const requestedReviewerId = (u.data as extract.ReviewRequestedEvent).requestedReviewerId; - if (!uniqueUserQuery.has(requestedReviewerId)) { + if (requestedReviewerId !== undefined && !uniqueUserQuery.has(requestedReviewerId)) { uniqueUserQuery.set(requestedReviewerId, requestedReviewerId); userQuery.push(eq(transformForgeUsers.externalId, requestedReviewerId)); } break; case 'review_request_removed': - const requestedReviewerRemovedId = (u.data as extract.ReviewRequestedEvent).requestedReviewerId; - if (!uniqueUserQuery.has(requestedReviewerRemovedId)) { + const requestedReviewerRemovedId = (u.data as extract.ReviewRequestRemovedEvent).requestedReviewerId; + if (requestedReviewerRemovedId !== undefined && !uniqueUserQuery.has(requestedReviewerRemovedId)) { uniqueUserQuery.set(requestedReviewerRemovedId, requestedReviewerRemovedId); userQuery.push(eq(transformForgeUsers.externalId, requestedReviewerRemovedId)); } @@ -893,10 +893,12 @@ async function selectForgeUsers(db: TransformDatabase, users: { key: K, userI userIdentifier = (u.data as extract.UnassignedEvent).assigneeId; break; case 'review_requested': - userIdentifier = (u.data as extract.ReviewRequestedEvent).requestedReviewerId; + const requestedReviewerId = (u.data as extract.ReviewRequestedEvent).requestedReviewerId; + userIdentifier = requestedReviewerId === undefined ? null : requestedReviewerId; break; case 'review_request_removed': - userIdentifier = (u.data as extract.ReviewRequestRemovedEvent).requestedReviewerId; + const unrequestedReviewerId = (u.data as extract.ReviewRequestRemovedEvent).requestedReviewerId + userIdentifier = unrequestedReviewerId === undefined ? null : unrequestedReviewerId; break; default: userIdentifier = null; diff --git a/packages/schemas/extract/src/timeline-events.ts b/packages/schemas/extract/src/timeline-events.ts index 64701d80e..43f22009a 100644 --- a/packages/schemas/extract/src/timeline-events.ts +++ b/packages/schemas/extract/src/timeline-events.ts @@ -65,13 +65,13 @@ export const CommittedEventSchema = z.object({ export const ReviewRequestRemovedEventSchema = z.object({ - requestedReviewerId: z.number(), - requestedReviewerName: z.string(), + requestedReviewerId: z.number().optional(), + requestedReviewerName: z.string().optional(), }); export const ReviewRequestedEventSchema = z.object({ - requestedReviewerId: z.number(), - requestedReviewerName: z.string(), + requestedReviewerId: z.number().optional(), + requestedReviewerName: z.string().optional(), }); export const ReviewedEventSchema = z.object({