feat: subscription return response updated for moveUserRequest (#39)

* feat: subscription return response updated for moveUserRequest

* feat: update test cases
This commit is contained in:
Mir Arif Hasan
2023-03-13 16:45:51 +06:00
committed by GitHub
parent 7d3b2c064a
commit 8550c92e37
4 changed files with 32 additions and 13 deletions

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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', () => {

View File

@@ -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);
}