Skip to content

Commit 5717e4e

Browse files
author
ruiichen
committed
- added pagination
1 parent ff67459 commit 5717e4e

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

backend/typescript/graphql/resolvers/reviewDashboardResolvers.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@ const reviewDashboardResolvers = {
88
Query: {
99
reviewDashboard: async (
1010
_parent: undefined,
11-
{ pageNumber }: { pageNumber: number },
12-
{ resultsPerPage }: { resultsPerPage: number },
11+
args: { pageNumber: number; resultsPerPage: number },
1312
): Promise<ReviewDashoardRowDTO[]> => {
1413
try {
1514
return await reviewDashboardService.getReviewDashboard(
16-
pageNumber,
17-
resultsPerPage,
15+
args.pageNumber,
16+
args.resultsPerPage,
1817
);
1918
} catch (error) {
2019
throw new Error(getErrorMessage(error));

backend/typescript/graphql/types/reviewDashboardType.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ const reviewDashboardType = gql`
2020
2121
extend type Query {
2222
reviewDashboard(
23-
pageNumber: Int
24-
resultsPerPage: Int
23+
pageNumber: Int!
24+
resultsPerPage: Int!
2525
): [ReviewDashboardRowDTO!]!
2626
}
2727
`;

backend/typescript/services/implementations/reviewDashboardService.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,18 @@ function toDTO(model: ApplicantRecord): ReviewDashoardRowDTO {
2525
class ReviewDashboardService implements IReviewDashboardService {
2626
/* eslint-disable class-methods-use-this */
2727
async getReviewDashboard(
28-
page: number,
28+
pageNumber: number,
2929
resultsPerPage: number,
3030
): Promise<ReviewDashoardRowDTO[]> {
3131
try {
32+
const perPage = Number.isFinite(Number(resultsPerPage))
33+
? Number(resultsPerPage)
34+
: 1;
35+
const currentPage = Number.isFinite(Number(pageNumber))
36+
? Number(pageNumber)
37+
: 1;
38+
const offsetRow = (currentPage - 1) * perPage;
39+
3240
// get applicant_record
3341
// JOIN applicant ON applicant_id
3442
// JOIN reviewed_applicant_record ON applicant_record_id
@@ -52,6 +60,9 @@ class ReviewDashboardService implements IReviewDashboardService {
5260
association: "applicant",
5361
},
5462
],
63+
order: [["id", "ASC"]],
64+
limit: perPage,
65+
offset: offsetRow,
5566
});
5667
return applicants.map(toDTO);
5768
} catch (error: unknown) {

0 commit comments

Comments
 (0)