Skip to content

Commit c9437a0

Browse files
Merge pull request #328 from Real-Dev-Squad/feat/pagination-PRs-routes
Adds pagination to `pullrequests` routes: `/stale` and `/open`
2 parents 702c9d6 + e8e845f commit c9437a0

File tree

3 files changed

+34
-12
lines changed

3 files changed

+34
-12
lines changed

controllers/pullRequests.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ const getUserPRs = async (req, res) => {
3737
*/
3838
const getStalePRs = async (req, res) => {
3939
try {
40-
const { data } = await githubService.fetchStalePRs()
40+
const { size, page } = req.query
41+
const { data } = await githubService.fetchStalePRs(size, page)
4142

4243
if (data.total_count) {
4344
const allPRs = githubService.extractPRdetails(data)
@@ -65,7 +66,8 @@ const getStalePRs = async (req, res) => {
6566
*/
6667
const getOpenPRs = async (req, res) => {
6768
try {
68-
const { data } = await githubService.fetchOpenPRs((req.query.page) || 1)
69+
const { size, page } = req.query
70+
const { data } = await githubService.fetchOpenPRs(size, page)
6971

7072
if (data.total_count) {
7173
const allPRs = githubService.extractPRdetails(data)

routes/pullrequests.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,17 @@ const pullRequest = require('../controllers/pullRequests')
99
* summary: Latest 10 Pull Requests in Real Dev Squad
1010
* tags:
1111
* - Pull Requests
12+
* parameters:
13+
* - in: query
14+
* name: size
15+
* schema:
16+
* type: integer
17+
* description: Number of pull requests to be returned
18+
* - in: query
19+
* name: page
20+
* schema:
21+
* type: integer
22+
* description: Page number for pagination
1223
* responses:
1324
* 200:
1425
* description: Pull Requests
@@ -40,6 +51,17 @@ router.get('/open', pullRequest.getOpenPRs)
4051
* summary: All open Pull Requests in Real Dev Squad
4152
* tags:
4253
* - Pull Requests
54+
* parameters:
55+
* - in: query
56+
* name: size
57+
* schema:
58+
* type: integer
59+
* description: Number of pull requests to be returned
60+
* - in: query
61+
* name: page
62+
* schema:
63+
* type: integer
64+
* description: Page number for pagination
4365
* responses:
4466
* 200:
4567
* description: Pull Requests

services/githubService.js

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -99,18 +99,17 @@ const fetchPRsByUser = async (username) => {
9999
}
100100

101101
/**
102-
* Fetches the oldest open N requests
103-
* @todo fetch N from query params
102+
* Fetches the oldest open `per_page` requests
104103
*/
105-
const fetchStalePRs = async () => {
104+
const fetchStalePRs = async (per_page = 10, page = 1) => {
106105
try {
107106
const url = getGithubURL({
108107
is: 'open'
109108
}, {
110109
sort: 'created',
111110
order: 'asc',
112-
per_page: 5,
113-
page: 1
111+
per_page,
112+
page
114113
})
115114
return getFetch(url)
116115
} catch (err) {
@@ -120,18 +119,17 @@ const fetchStalePRs = async () => {
120119
}
121120

122121
/**
123-
* Fetches the latest 10 open PRs
124-
* @todo fetch N from query params
122+
* Fetches the latest `per_page` open PRs
125123
*/
126-
const fetchOpenPRs = async (pageNumber) => {
124+
const fetchOpenPRs = async (per_page = 10, page = 1) => {
127125
try {
128126
const url = getGithubURL({
129127
is: 'open'
130128
}, {
131129
sort: 'created',
132130
order: 'desc',
133-
per_page: 10,
134-
page: pageNumber
131+
per_page,
132+
page
135133
})
136134
return getFetch(url)
137135
} catch (err) {

0 commit comments

Comments
 (0)