feat: add reqType to userHistoryDeletedMany subscription (#61)

This commit is contained in:
Akash K
2023-03-30 12:17:00 +05:30
committed by GitHub
parent 885c0dc500
commit 7286d3b94f
5 changed files with 44 additions and 15 deletions

View File

@@ -5,7 +5,10 @@ import {
import { User } from 'src/user/user.model';
import { UserSettings } from 'src/user-settings/user-settings.model';
import { UserEnvironment } from '../user-environment/user-environments.model';
import { UserHistory } from '../user-history/user-history.model';
import {
UserHistory,
UserHistoryDeletedManyData,
} from '../user-history/user-history.model';
import { TeamMember } from 'src/team/team.model';
import { TeamEnvironment } from 'src/team-environments/team-environments.model';
import {
@@ -58,7 +61,7 @@ export type TopicDef = {
[topic: `team_coll/${string}/${'coll_removed'}`]: string;
[topic: `team_coll/${string}/${'coll_moved'}`]: TeamCollection;
[topic: `team_coll/${string}/${'coll_order_updated'}`]: CollectionReorderData;
[topic: `user_history/${string}/deleted_many`]: number;
[topic: `user_history/${string}/deleted_many`]: UserHistoryDeletedManyData;
[
topic: `team_req/${string}/${'req_created' | 'req_updated' | 'req_moved'}`
]: TeamRequest;

View File

@@ -40,6 +40,18 @@ export class UserHistory {
executedOn: Date;
}
@ObjectType()
export class UserHistoryDeletedManyData {
@Field(() => Number, {
description: 'Number of user histories deleted',
})
count: number;
@Field(() => ReqType, {
description: 'Type of the request in the history',
})
reqType: ReqType;
}
registerEnumType(ReqType, {
name: 'ReqType',
});

View File

@@ -1,7 +1,7 @@
import { Args, ID, Mutation, Resolver, Subscription } from '@nestjs/graphql';
import { UserHistoryService } from './user-history.service';
import { PubSubService } from '../pubsub/pubsub.service';
import { UserHistory } from './user-history.model';
import { UserHistory, UserHistoryDeletedManyData } from './user-history.model';
import { ReqType } from 'src/types/RequestTypes';
import { UseGuards } from '@nestjs/common';
import { GqlAuthGuard } from '../guards/gql-auth.guard';
@@ -93,7 +93,7 @@ export class UserHistoryResolver {
return deletedHistory.right;
}
@Mutation(() => Number, {
@Mutation(() => UserHistoryDeletedManyData, {
description:
'Deletes all REST/GQL history for a user based on Request type',
})
@@ -106,7 +106,7 @@ export class UserHistoryResolver {
type: () => ReqType,
})
reqType: ReqType,
): Promise<number> {
): Promise<UserHistoryDeletedManyData> {
const deletedHistory = await this.userHistoryService.deleteAllUserHistory(
user.uid,
reqType,
@@ -147,7 +147,7 @@ export class UserHistoryResolver {
return this.pubsub.asyncIterator(`user_history/${user.uid}/deleted`);
}
@Subscription(() => Number, {
@Subscription(() => UserHistoryDeletedManyData, {
description: 'Listen for User History deleted many',
resolve: (value) => value,
})

View File

@@ -428,7 +428,10 @@ describe('UserHistoryService', () => {
return expect(
await userHistoryService.deleteAllUserHistory('abc', 'REST'),
).toEqualRight(2);
).toEqualRight({
count: 2,
reqType: ReqType.REST,
});
});
test('Should resolve right and delete all user GQL history for a request type', async () => {
mockPrisma.userHistory.deleteMany.mockResolvedValueOnce({
@@ -437,7 +440,10 @@ describe('UserHistoryService', () => {
return expect(
await userHistoryService.deleteAllUserHistory('abc', 'GQL'),
).toEqualRight(2);
).toEqualRight({
count: 2,
reqType: ReqType.GQL,
});
});
test('Should resolve left and error when ReqType is invalid', async () => {
return expect(
@@ -452,7 +458,10 @@ describe('UserHistoryService', () => {
await userHistoryService.deleteAllUserHistory('abc', 'REST');
return expect(mockPubSub.publish).toHaveBeenCalledWith(
`user_history/abc/deleted_many`,
2,
{
count: 2,
reqType: ReqType.REST,
},
);
});
test('Should delete all user GQL history for a request type and publish deleted many subscription', async () => {
@@ -463,7 +472,10 @@ describe('UserHistoryService', () => {
await userHistoryService.deleteAllUserHistory('abc', 'GQL');
return expect(mockPubSub.publish).toHaveBeenCalledWith(
`user_history/abc/deleted_many`,
2,
{
count: 2,
reqType: ReqType.GQL,
},
);
});
});

View File

@@ -178,12 +178,14 @@ export class UserHistoryService {
},
});
const deletionInfo = {
count: deletedCount.count,
reqType: requestType.right,
};
// Publish multiple user history deleted subscription
await this.pubsub.publish(
`user_history/${uid}/deleted_many`,
deletedCount.count,
);
return E.right(deletedCount.count);
await this.pubsub.publish(`user_history/${uid}/deleted_many`, deletionInfo);
return E.right(deletionInfo);
}
/**