From d56224b17bdeb0915f35a5dba5fb7155a0c3285a Mon Sep 17 00:00:00 2001 From: Balu Babu Date: Wed, 25 Oct 2023 21:57:09 +0530 Subject: [PATCH] chore: completed query to fetch all user created shared-requests --- .../shared-request/shared-request.resolver.ts | 12 ++++++++ .../shared-request/shared-request.service.ts | 28 +++++++++++++++++++ 2 files changed, 40 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 1c61d3566..369ae942a 100644 --- a/packages/hoppscotch-backend/src/shared-request/shared-request.resolver.ts +++ b/packages/hoppscotch-backend/src/shared-request/shared-request.resolver.ts @@ -18,6 +18,7 @@ import { throwErr } from 'src/utils'; import { GqlUser } from 'src/decorators/gql-user.decorator'; import { AuthUser } from 'src/types/AuthUser'; import { SkipThrottle } from '@nestjs/throttler'; +import { PaginationArgs } from 'src/types/input-types.args'; @UseGuards(GqlThrottlerGuard) @Resolver(() => SharedRequest) @@ -47,6 +48,17 @@ export class SharedRequestResolver { return result.right; } + @Query(() => [SharedRequest], { + description: 'List all shared-request the current user has generated', + }) + @UseGuards(GqlAuthGuard) + async mySharedRequest( + @GqlUser() user: AuthUser, + @Args() args: PaginationArgs, + ) { + return this.sharedRequestService.fetchUserSharedRequests(user.uid, args); + } + /* Mutations */ @Mutation(() => SharedRequest, { description: 'Create a shared-request for the given request.', 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 21c53e08f..614042ba8 100644 --- a/packages/hoppscotch-backend/src/shared-request/shared-request.service.ts +++ b/packages/hoppscotch-backend/src/shared-request/shared-request.service.ts @@ -12,6 +12,7 @@ import { } from 'src/errors'; import { stringToJson } from 'src/utils'; import { AuthUser } from 'src/types/AuthUser'; +import { PaginationArgs } from 'src/types/input-types.args'; const SHORT_CODE_LENGTH = 12; const SHORT_CODE_CHARS = @@ -125,4 +126,31 @@ export class SharedRequestService { return E.right(this.cast(createdSharedRequest)); } + + /** + * Fetch SharedRequest created by a User + * + * @param uid User Uid + * @param args Pagination arguments + * @returns Array of SharedRequest + */ + async fetchUserSharedRequests(uid: string, args: PaginationArgs) { + const sharedRequests = await this.prisma.shortcode.findMany({ + where: { + creatorUid: uid, + }, + orderBy: { + createdOn: 'desc', + }, + skip: args.cursor ? 1 : 0, + take: args.take, + cursor: args.cursor ? { id: args.cursor } : undefined, + }); + + const fetchedSharedRequests: SharedRequest[] = sharedRequests.map((code) => + this.cast(code), + ); + + return fetchedSharedRequests; + } }