From b7462ab014951c331698d5f8cabc5a708c076228 Mon Sep 17 00:00:00 2001 From: Balu Babu Date: Wed, 25 Oct 2023 21:49:04 +0530 Subject: [PATCH] chore: completed subscription to create a SharedRequest --- .../src/pubsub/topicsDefs.ts | 2 ++ .../shared-request/shared-request.resolver.ts | 21 ++++++++++++++++++- .../shared-request/shared-request.service.ts | 2 +- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/hoppscotch-backend/src/pubsub/topicsDefs.ts b/packages/hoppscotch-backend/src/pubsub/topicsDefs.ts index c4f316398..cc9fff042 100644 --- a/packages/hoppscotch-backend/src/pubsub/topicsDefs.ts +++ b/packages/hoppscotch-backend/src/pubsub/topicsDefs.ts @@ -27,6 +27,7 @@ import { UserCollectionReorderData, } from 'src/user-collection/user-collections.model'; import { Shortcode } from 'src/shortcode/shortcode.model'; +import { SharedRequest } from 'src/shared-request/shared-requests.model'; // A custom message type that defines the topic and the corresponding payload. // For every module that publishes a subscription add its type def and the possible subscription type. @@ -70,4 +71,5 @@ export type TopicDef = { [topic: `team/${string}/invite_added`]: TeamInvitation; [topic: `team/${string}/invite_removed`]: string; [topic: `shortcode/${string}/${'created' | 'revoked'}`]: Shortcode; + [topic: `shared_request/${string}/${'created' | 'revoked'}`]: SharedRequest; }; 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 4e25aa3ea..1c61d3566 100644 --- a/packages/hoppscotch-backend/src/shared-request/shared-request.resolver.ts +++ b/packages/hoppscotch-backend/src/shared-request/shared-request.resolver.ts @@ -1,4 +1,11 @@ -import { Args, ID, Resolver, Query, Mutation } from '@nestjs/graphql'; +import { + Args, + ID, + Resolver, + Query, + Mutation, + Subscription, +} from '@nestjs/graphql'; import { SharedRequest } from './shared-requests.model'; import { GqlThrottlerGuard } from 'src/guards/gql-throttler.guard'; import { UseGuards } from '@nestjs/common'; @@ -10,6 +17,7 @@ import { GqlAuthGuard } from 'src/guards/gql-auth.guard'; import { throwErr } from 'src/utils'; import { GqlUser } from 'src/decorators/gql-user.decorator'; import { AuthUser } from 'src/types/AuthUser'; +import { SkipThrottle } from '@nestjs/throttler'; @UseGuards(GqlThrottlerGuard) @Resolver(() => SharedRequest) @@ -67,4 +75,15 @@ export class SharedRequestResolver { if (E.isLeft(result)) throwErr(result.left); return result.right; } + + /* Subscriptions */ + @Subscription(() => SharedRequest, { + description: 'Listen for shortcode creation', + resolve: (value) => value, + }) + @SkipThrottle() + @UseGuards(GqlAuthGuard) + mySharedRequestCreated(@GqlUser() user: AuthUser) { + return this.pubsub.asyncIterator(`shared_request/${user.uid}/created`); + } } 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 fe6802242..21c53e08f 100644 --- a/packages/hoppscotch-backend/src/shared-request/shared-request.service.ts +++ b/packages/hoppscotch-backend/src/shared-request/shared-request.service.ts @@ -119,7 +119,7 @@ export class SharedRequestService { }); this.pubsub.publish( - `shortcode/${createdSharedRequest.creatorUid}/created`, + `shared_request/${createdSharedRequest.creatorUid}/created`, this.cast(createdSharedRequest), );