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(
|
return expect(
|
||||||
await userHistoryService.fetchUserHistory('abc', ReqType.REST),
|
await userHistoryService.fetchUserHistory('abc', 2, ReqType.REST),
|
||||||
).toEqual(userHistory);
|
).toEqual(userHistory);
|
||||||
});
|
});
|
||||||
test('Should return a list of users GQL history if exists', async () => {
|
test('Should return a list of users GQL history if exists', async () => {
|
||||||
@@ -118,7 +118,7 @@ describe('UserHistoryService', () => {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
return expect(
|
return expect(
|
||||||
await userHistoryService.fetchUserHistory('abc', ReqType.GQL),
|
await userHistoryService.fetchUserHistory('abc', 2, ReqType.GQL),
|
||||||
).toEqual(userHistory);
|
).toEqual(userHistory);
|
||||||
});
|
});
|
||||||
test('Should return an empty list of users REST history if doesnt exists', async () => {
|
test('Should return an empty list of users REST history if doesnt exists', async () => {
|
||||||
@@ -126,7 +126,7 @@ describe('UserHistoryService', () => {
|
|||||||
|
|
||||||
const userHistory: UserHistory[] = [];
|
const userHistory: UserHistory[] = [];
|
||||||
return expect(
|
return expect(
|
||||||
await userHistoryService.fetchUserHistory('abc', ReqType.REST),
|
await userHistoryService.fetchUserHistory('abc', 2, ReqType.REST),
|
||||||
).toEqual(userHistory);
|
).toEqual(userHistory);
|
||||||
});
|
});
|
||||||
test('Should return an empty list of users GQL history if doesnt exists', async () => {
|
test('Should return an empty list of users GQL history if doesnt exists', async () => {
|
||||||
@@ -134,7 +134,7 @@ describe('UserHistoryService', () => {
|
|||||||
|
|
||||||
const userHistory: UserHistory[] = [];
|
const userHistory: UserHistory[] = [];
|
||||||
return expect(
|
return expect(
|
||||||
await userHistoryService.fetchUserHistory('abc', ReqType.GQL),
|
await userHistoryService.fetchUserHistory('abc', 2, ReqType.GQL),
|
||||||
).toEqual(userHistory);
|
).toEqual(userHistory);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -278,7 +278,7 @@ describe('UserHistoryService', () => {
|
|||||||
});
|
});
|
||||||
describe('toggleHistoryStarStatus', () => {
|
describe('toggleHistoryStarStatus', () => {
|
||||||
test('Should resolve right and star/unstar a request in the history', async () => {
|
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({
|
mockPrisma.userHistory.findFirst.mockResolvedValueOnce({
|
||||||
userUid: 'abc',
|
userUid: 'abc',
|
||||||
id: '1',
|
id: '1',
|
||||||
|
|||||||
@@ -19,15 +19,20 @@ export class UserHistoryService {
|
|||||||
/**
|
/**
|
||||||
* Fetch users REST or GraphQL history based on ReqType param.
|
* Fetch users REST or GraphQL history based on ReqType param.
|
||||||
* @param uid Users uid
|
* @param uid Users uid
|
||||||
|
* @param take items to fetch
|
||||||
* @param reqType request Type to fetch i.e. GraphQL or REST
|
* @param reqType request Type to fetch i.e. GraphQL or REST
|
||||||
* @returns an array of user history
|
* @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({
|
const userHistory = await this.prisma.userHistory.findMany({
|
||||||
where: {
|
where: {
|
||||||
userUid: uid,
|
userUid: uid,
|
||||||
reqType: reqType,
|
reqType: reqType,
|
||||||
},
|
},
|
||||||
|
take: take,
|
||||||
|
orderBy: {
|
||||||
|
executedOn: 'desc',
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const userHistoryColl: UserHistory[] = userHistory.map(
|
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 { User } from '../user/user.model';
|
||||||
import { UserHistoryService } from './user-history.service';
|
import { UserHistoryService } from './user-history.service';
|
||||||
import { ReqType, UserHistory } from './user-history.model';
|
import { ReqType, UserHistory } from './user-history.model';
|
||||||
|
import { PaginationArgs } from '../types/input-types.args';
|
||||||
|
|
||||||
@Resolver(() => User)
|
@Resolver(() => User)
|
||||||
export class UserHistoryUserResolver {
|
export class UserHistoryUserResolver {
|
||||||
@@ -9,18 +10,26 @@ export class UserHistoryUserResolver {
|
|||||||
@ResolveField(() => [UserHistory], {
|
@ResolveField(() => [UserHistory], {
|
||||||
description: 'Returns a users REST history',
|
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(
|
return await this.userHistoryService.fetchUserHistory(
|
||||||
user.uid,
|
user.uid,
|
||||||
|
args.take,
|
||||||
ReqType.REST,
|
ReqType.REST,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ResolveField(() => [UserHistory], {
|
@ResolveField(() => [UserHistory], {
|
||||||
description: 'Returns a users GraphQL history',
|
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(
|
return await this.userHistoryService.fetchUserHistory(
|
||||||
user.uid,
|
user.uid,
|
||||||
|
args.take,
|
||||||
ReqType.GQL,
|
ReqType.GQL,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user