fix : User history fix for returning most recently executed 50 user history REST/GraphQL items (HBE-165) (#27)
* chore: updated fetchUserHistory operation to return recently executed 50 entries * chore: updated history to use PaginationArgs for operation * chore: updated GraphQL resolver name
This commit is contained in:
@@ -71,7 +71,7 @@ describe('UserHistoryService', () => {
|
||||
];
|
||||
|
||||
return expect(
|
||||
await userHistoryService.fetchUserHistory('abc', ReqType.REST),
|
||||
await userHistoryService.fetchUserHistory('abc', 2, ReqType.REST),
|
||||
).toEqual(userHistory);
|
||||
});
|
||||
test('Should return a list of users GQL history if exists', async () => {
|
||||
@@ -118,7 +118,7 @@ describe('UserHistoryService', () => {
|
||||
},
|
||||
];
|
||||
return expect(
|
||||
await userHistoryService.fetchUserHistory('abc', ReqType.GQL),
|
||||
await userHistoryService.fetchUserHistory('abc', 2, ReqType.GQL),
|
||||
).toEqual(userHistory);
|
||||
});
|
||||
test('Should return an empty list of users REST history if doesnt exists', async () => {
|
||||
@@ -126,7 +126,7 @@ describe('UserHistoryService', () => {
|
||||
|
||||
const userHistory: UserHistory[] = [];
|
||||
return expect(
|
||||
await userHistoryService.fetchUserHistory('abc', ReqType.REST),
|
||||
await userHistoryService.fetchUserHistory('abc', 2, ReqType.REST),
|
||||
).toEqual(userHistory);
|
||||
});
|
||||
test('Should return an empty list of users GQL history if doesnt exists', async () => {
|
||||
@@ -134,7 +134,7 @@ describe('UserHistoryService', () => {
|
||||
|
||||
const userHistory: UserHistory[] = [];
|
||||
return expect(
|
||||
await userHistoryService.fetchUserHistory('abc', ReqType.GQL),
|
||||
await userHistoryService.fetchUserHistory('abc', 2, ReqType.GQL),
|
||||
).toEqual(userHistory);
|
||||
});
|
||||
});
|
||||
@@ -278,7 +278,7 @@ describe('UserHistoryService', () => {
|
||||
});
|
||||
describe('toggleHistoryStarStatus', () => {
|
||||
test('Should resolve right and star/unstar a request in the history', async () => {
|
||||
const createdOnDate = new Date()
|
||||
const createdOnDate = new Date();
|
||||
mockPrisma.userHistory.findFirst.mockResolvedValueOnce({
|
||||
userUid: 'abc',
|
||||
id: '1',
|
||||
|
||||
@@ -19,15 +19,20 @@ export class UserHistoryService {
|
||||
/**
|
||||
* Fetch users REST or GraphQL history based on ReqType param.
|
||||
* @param uid Users uid
|
||||
* @param take items to fetch
|
||||
* @param reqType request Type to fetch i.e. GraphQL or REST
|
||||
* @returns an array of user history
|
||||
*/
|
||||
async fetchUserHistory(uid: string, reqType: ReqType) {
|
||||
async fetchUserHistory(uid: string, take: number, reqType: ReqType) {
|
||||
const userHistory = await this.prisma.userHistory.findMany({
|
||||
where: {
|
||||
userUid: uid,
|
||||
reqType: reqType,
|
||||
},
|
||||
take: take,
|
||||
orderBy: {
|
||||
executedOn: 'desc',
|
||||
},
|
||||
});
|
||||
|
||||
const userHistoryColl: UserHistory[] = userHistory.map(
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { Parent, ResolveField, Resolver } from '@nestjs/graphql';
|
||||
import { Args, Parent, ResolveField, Resolver } from '@nestjs/graphql';
|
||||
import { User } from '../user/user.model';
|
||||
import { UserHistoryService } from './user-history.service';
|
||||
import { ReqType, UserHistory } from './user-history.model';
|
||||
import { PaginationArgs } from '../types/input-types.args';
|
||||
|
||||
@Resolver(() => User)
|
||||
export class UserHistoryUserResolver {
|
||||
@@ -9,18 +10,26 @@ export class UserHistoryUserResolver {
|
||||
@ResolveField(() => [UserHistory], {
|
||||
description: 'Returns a users REST history',
|
||||
})
|
||||
async RESTHistory(@Parent() user: User): Promise<UserHistory[]> {
|
||||
async RESTHistory(
|
||||
@Parent() user: User,
|
||||
@Args() args: PaginationArgs,
|
||||
): Promise<UserHistory[]> {
|
||||
return await this.userHistoryService.fetchUserHistory(
|
||||
user.uid,
|
||||
args.take,
|
||||
ReqType.REST,
|
||||
);
|
||||
}
|
||||
@ResolveField(() => [UserHistory], {
|
||||
description: 'Returns a users GraphQL history',
|
||||
})
|
||||
async GraphQLHistory(@Parent() user: User): Promise<UserHistory[]> {
|
||||
async GQLHistory(
|
||||
@Parent() user: User,
|
||||
@Args() args: PaginationArgs,
|
||||
): Promise<UserHistory[]> {
|
||||
return await this.userHistoryService.fetchUserHistory(
|
||||
user.uid,
|
||||
args.take,
|
||||
ReqType.GQL,
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user