Skip to content

Commit 6cd7ed3

Browse files
Merge pull request #14 from cardanoapi/feat/drep-api-pagination
Add pagination on drep delegation Apis
2 parents ddf1333 + f0a9af7 commit 6cd7ed3

File tree

4 files changed

+262
-125
lines changed

4 files changed

+262
-125
lines changed

src/controllers/drep.ts

Lines changed: 42 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import {Request, Response, Router} from 'express'
2-
import {handlerWrapper} from '../errors/AppError'
3-
import {decodeDrep} from '../helpers/validator'
1+
import { Request, Response, Router } from 'express'
2+
import { handlerWrapper } from '../errors/AppError'
3+
import { decodeDrep } from '../helpers/validator'
44
import {
55
fetchDrepDetails,
66
fetchDrepList,
@@ -11,7 +11,7 @@ import {
1111
fetchDRepActiveDelegators,
1212
fetchDrepLiveStats,
1313
} from '../repository/drep'
14-
import {DrepSortType, DrepStatusType} from '../types/drep'
14+
import { DrepSortType, DrepStatusType } from '../types/drep'
1515

1616
const router = Router()
1717

@@ -26,30 +26,42 @@ const getDrepList = async (req: Request, res: Response) => {
2626
const page = req.query.page ? +req.query.page : 1
2727
const status = req.query.status ? (req.query.status as DrepStatusType) : undefined
2828
const sort = req.query.sort ? (req.query.sort as DrepSortType) : undefined
29-
const searchDrep = req.query.search ? decodeDrep(req.query.search as string) : {credential: '', isScript: undefined}
30-
const {
31-
items,
32-
totalCount
33-
} = await fetchDrepList(page, size, searchDrep.credential, searchDrep.isScript, status, sort)
34-
return res.status(200).json({total: totalCount, page, size, items})
29+
const searchDrep = req.query.search
30+
? decodeDrep(req.query.search as string)
31+
: { credential: '', isScript: undefined }
32+
const { items, totalCount } = await fetchDrepList(
33+
page,
34+
size,
35+
searchDrep.credential,
36+
searchDrep.isScript,
37+
status,
38+
sort
39+
)
40+
return res.status(200).json({ total: totalCount, page, size, items })
3541
}
3642

3743
const getDrepVoteDetails = async (req: Request, res: Response) => {
44+
const size = req.query.size ? +req.query.size : 10
45+
const page = req.query.page ? +req.query.page : 1
3846
const dRepId = decodeDrep(req.params.id as string)
39-
const result = await fetchDrepVoteDetails(dRepId.credential, dRepId.isScript)
40-
return res.status(200).json(result)
47+
const { totalCount, items } = await fetchDrepVoteDetails(size, page, dRepId.credential, dRepId.isScript)
48+
return res.status(200).json({ totalCount, size, page, items })
4149
}
4250

4351
const getDrepDelegationDetails = async (req: Request, res: Response) => {
52+
const size = req.query.size ? +req.query.size : 10
53+
const page = req.query.page ? +req.query.page : 1
4454
const dRepId = decodeDrep(req.params.id as string)
45-
const result = await fetchDrepDelegationHistory(dRepId.credential, dRepId.isScript)
46-
return res.status(200).json(result)
55+
const { items, totalCount } = await fetchDrepDelegationHistory(size, page, dRepId.credential, dRepId.isScript)
56+
return res.status(200).json({ totalCount, page, size, items })
4757
}
4858

4959
const getDrepRegistrationDetails = async (req: Request, res: Response) => {
60+
const size = req.query.size ? +req.query.size : 10
61+
const page = req.query.page ? +req.query.page : 1
5062
const dRepId = decodeDrep(req.params.id as string)
51-
const result = await fetchDrepRegistrationDetails(dRepId.credential, dRepId.isScript)
52-
return res.status(200).json(result)
63+
const { items, totalCount } = await fetchDrepRegistrationDetails(size, page, dRepId.credential, dRepId.isScript)
64+
return res.status(200).json({ totalCount, page, size, items })
5365
}
5466

5567
const getDrepLiveStats = async (req: Request, res: Response) => {
@@ -59,17 +71,27 @@ const getDrepLiveStats = async (req: Request, res: Response) => {
5971
}
6072

6173
const getDrepActiveDelegators = async (req: Request, res: Response) => {
74+
const size = req.query.size ? +req.query.size : 10
75+
const page = req.query.page ? +req.query.page : 1
6276
const dRepId = decodeDrep(req.params.id as string)
6377
const balance = req.query.balance === 'true'
64-
const result = await fetchDRepActiveDelegators(dRepId.credential, dRepId.isScript, balance)
65-
return res.status(200).json(result)
78+
const { items, totalCount } = await fetchDRepActiveDelegators(
79+
size,
80+
page,
81+
dRepId.credential,
82+
dRepId.isScript,
83+
balance
84+
)
85+
return res.status(200).json({ total: totalCount, page, size, items })
6686
}
6787

6888
const getDrepLiveDelegators = async (req: Request, res: Response) => {
89+
const size = req.query.size ? +req.query.size : 10
90+
const page = req.query.page ? +req.query.page : 1
6991
const dRepId = decodeDrep(req.params.id as string)
7092
const balance = req.query.balance === 'true'
71-
const liveDelegators = await fetchDrepLiveDelegators(dRepId.credential, dRepId.isScript, balance)
72-
return res.status(200).json(liveDelegators)
93+
const { totalCount, items } = await fetchDrepLiveDelegators(size, page, dRepId.credential, dRepId.isScript, balance)
94+
return res.status(200).json({ totalCount, page, size, items })
7395
}
7496

7597
router.get('/', handlerWrapper(getDrepList))

0 commit comments

Comments
 (0)