feat: add reqType to userHistoryDeletedMany subscription (#61)
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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',
|
||||
});
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user