From 8550c92e373b3b8b0bda5bc245875e026f0d203a Mon Sep 17 00:00:00 2001 From: Mir Arif Hasan Date: Mon, 13 Mar 2023 16:45:51 +0600 Subject: [PATCH] feat: subscription return response updated for moveUserRequest (#39) * feat: subscription return response updated for moveUserRequest * feat: update test cases --- .../hoppscotch-backend/src/pubsub/topicsDefs.ts | 12 ++++++------ .../src/user-request/user-request.model.ts | 15 +++++++++++++++ .../user-request/user-request.service.spec.ts | 2 +- .../src/user-request/user-request.service.ts | 16 ++++++++++------ 4 files changed, 32 insertions(+), 13 deletions(-) diff --git a/packages/hoppscotch-backend/src/pubsub/topicsDefs.ts b/packages/hoppscotch-backend/src/pubsub/topicsDefs.ts index 8c8ac3b18..70330395a 100644 --- a/packages/hoppscotch-backend/src/pubsub/topicsDefs.ts +++ b/packages/hoppscotch-backend/src/pubsub/topicsDefs.ts @@ -1,4 +1,7 @@ -import { UserRequest } from 'src/user-request/user-request.model'; +import { + UserRequest, + UserRequestReorderData, +} from 'src/user-request/user-request.model'; import { User } from 'src/user/user.model'; import { UserSettings } from 'src/user-settings/user-settings.model'; import { UserEnvironment } from '../user-environment/user-environments.model'; @@ -28,12 +31,9 @@ export type TopicDef = { ]: UserEnvironment; [topic: `user_environment/${string}/deleted_many`]: number; [ - topic: `user_request/${string}/${ - | 'created' - | 'updated' - | 'deleted' - | 'moved'}` + topic: `user_request/${string}/${'created' | 'updated' | 'deleted'}` ]: UserRequest; + [topic: `user_request/${string}/${'moved'}`]: UserRequestReorderData; [ topic: `user_history/${string}/${'created' | 'updated' | 'deleted'}` ]: UserHistory; diff --git a/packages/hoppscotch-backend/src/user-request/user-request.model.ts b/packages/hoppscotch-backend/src/user-request/user-request.model.ts index 061d77bfe..2d03fec7e 100644 --- a/packages/hoppscotch-backend/src/user-request/user-request.model.ts +++ b/packages/hoppscotch-backend/src/user-request/user-request.model.ts @@ -33,3 +33,18 @@ export class UserRequest { }) createdOn: Date; } + +@ObjectType() +export class UserRequestReorderData { + @Field({ + description: 'User request being moved', + }) + request: UserRequest; + + @Field({ + description: + 'User request succeeding the request being moved in its new position', + nullable: true, + }) + nextRequest?: UserRequest; +} diff --git a/packages/hoppscotch-backend/src/user-request/user-request.service.spec.ts b/packages/hoppscotch-backend/src/user-request/user-request.service.spec.ts index 23528b8b4..9d6900b70 100644 --- a/packages/hoppscotch-backend/src/user-request/user-request.service.spec.ts +++ b/packages/hoppscotch-backend/src/user-request/user-request.service.spec.ts @@ -760,7 +760,7 @@ describe('UserRequestService', () => { expect(mockPubSub.publish).toHaveBeenCalledWith( `user_request/${dbUserRequests[0].userUid}/moved`, - userRequests[0], + { request: userRequests[0], nextRequest: null }, ); }); test('Should resolve left if finding the requests fails', () => { diff --git a/packages/hoppscotch-backend/src/user-request/user-request.service.ts b/packages/hoppscotch-backend/src/user-request/user-request.service.ts index 7414043eb..42d02bfa7 100644 --- a/packages/hoppscotch-backend/src/user-request/user-request.service.ts +++ b/packages/hoppscotch-backend/src/user-request/user-request.service.ts @@ -261,27 +261,31 @@ export class UserRequestService { user, ); if (E.isLeft(twoRequests)) return twoRequests; - const { request, nextRequest } = twoRequests.right; + const { request: dbRequest, nextRequest: dbNextRequest } = + twoRequests.right; const isTypeValidate = await this.validateTypeEqualityForMoveRequest( srcCollID, destCollID, - request, - nextRequest, + dbRequest, + dbNextRequest, ); if (E.isLeft(isTypeValidate)) return E.left(isTypeValidate.left); const updatedRequest = await this.reorderRequests( srcCollID, - request, + dbRequest, destCollID, - nextRequest, + dbNextRequest, ); if (E.isLeft(updatedRequest)) return updatedRequest; const userRequest: UserRequest = this.cast(updatedRequest.right); - await this.pubsub.publish(`user_request/${user.uid}/moved`, userRequest); + await this.pubsub.publish(`user_request/${user.uid}/moved`, { + request: userRequest, + nextRequest: dbNextRequest ? this.cast(dbNextRequest) : null, + }); return E.right(userRequest); }