From 6023ee27cf543a26be944280ac0bdeb9fc9b276d Mon Sep 17 00:00:00 2001 From: Balu Babu Date: Wed, 25 Oct 2023 22:02:55 +0530 Subject: [PATCH] chore: completed mutation to delete a SharedRequest --- .../shared-request/shared-request.resolver.ts | 22 ++++++++++++++ .../shared-request/shared-request.service.ts | 29 +++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/packages/hoppscotch-backend/src/shared-request/shared-request.resolver.ts b/packages/hoppscotch-backend/src/shared-request/shared-request.resolver.ts index 369ae942a..4791a5393 100644 --- a/packages/hoppscotch-backend/src/shared-request/shared-request.resolver.ts +++ b/packages/hoppscotch-backend/src/shared-request/shared-request.resolver.ts @@ -88,6 +88,28 @@ export class SharedRequestResolver { return result.right; } + @Mutation(() => Boolean, { + description: 'Revoke a user generated shared-request', + }) + @UseGuards(GqlAuthGuard) + async revokeSharedRequest( + @GqlUser() user: AuthUser, + @Args({ + name: 'code', + type: () => ID, + description: 'The shared-request to resolve', + }) + code: string, + ) { + const result = await this.sharedRequestService.revokeSharedRequest( + code, + user.uid, + ); + + if (E.isLeft(result)) throwErr(result.left); + return result.right; + } + /* Subscriptions */ @Subscription(() => SharedRequest, { description: 'Listen for shortcode creation', diff --git a/packages/hoppscotch-backend/src/shared-request/shared-request.service.ts b/packages/hoppscotch-backend/src/shared-request/shared-request.service.ts index 614042ba8..bfaea7276 100644 --- a/packages/hoppscotch-backend/src/shared-request/shared-request.service.ts +++ b/packages/hoppscotch-backend/src/shared-request/shared-request.service.ts @@ -153,4 +153,33 @@ export class SharedRequestService { return fetchedSharedRequests; } + + /** + * Delete a SharedRequest + * + * @param sharedRequestID SharedRequest + * @param uid User Uid + * @returns Boolean on successful deletion + */ + async revokeSharedRequest(sharedRequestID: string, uid: string) { + try { + const deletedSharedRequest = await this.prisma.shortcode.delete({ + where: { + creator_uid_shortcode_unique: { + creatorUid: uid, + id: sharedRequestID, + }, + }, + }); + + this.pubsub.publish( + `shared_request/${deletedSharedRequest.creatorUid}/revoked`, + this.cast(deletedSharedRequest), + ); + + return E.right(true); + } catch (error) { + return E.left(SHARED_REQUEST_NOT_FOUND); + } + } }