Skip to content

Commit a0cebf5

Browse files
authored
Fix: make query limits backwards compatible (#1509)
* fix(paging-query-limits): added maxlimit override for backwards compatibility. Raised limits for endpoints for which explorer requires higher limits
1 parent 162c45a commit a0cebf5

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

src/api/pagination.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,23 +65,24 @@ const pagingQueryLimits: Record<ResourceType, { defaultLimit: number; maxLimit:
6565
defaultLimit: 50,
6666
maxLimit: 200,
6767
},
68-
[ResourceType.Token]: {
69-
defaultLimit: 50,
70-
maxLimit: 200,
71-
},
7268
[ResourceType.Pox2Event]: {
7369
defaultLimit: 96,
7470
maxLimit: 200,
7571
},
7672
};
7773

78-
export function getPagingQueryLimit(resourceType: ResourceType, limitOverride?: any) {
74+
export function getPagingQueryLimit(
75+
resourceType: ResourceType,
76+
limitOverride?: any,
77+
maxLimitOverride?: number
78+
) {
7979
const pagingQueryLimit = pagingQueryLimits[resourceType];
8080
if (!limitOverride) {
8181
return pagingQueryLimit.defaultLimit;
8282
}
8383
const newLimit = parsePagingQueryInput(limitOverride);
84-
if (newLimit > pagingQueryLimit.maxLimit) {
84+
const maxLimit = maxLimitOverride ?? pagingQueryLimit.maxLimit;
85+
if (newLimit > maxLimit) {
8586
throw new InvalidRequestError(
8687
`'limit' must be equal to or less than ${pagingQueryLimit.maxLimit}`,
8788
InvalidRequestErrorType.invalid_query

src/api/routes/tx.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ export function createTxRouter(db: PgStore): express.Router {
198198
'/events',
199199
cacheHandler,
200200
asyncHandler(async (req, res, next) => {
201-
const limit = getPagingQueryLimit(ResourceType.Tx, req.query['limit']);
201+
const limit = getPagingQueryLimit(ResourceType.Tx, req.query['limit'], 100);
202202
const offset = parsePagingQueryInput(req.query['offset'] ?? 0);
203203

204204
const principalOrTxId = parseAddressOrTxId(req, res, next);
@@ -227,7 +227,7 @@ export function createTxRouter(db: PgStore): express.Router {
227227
return res.redirect('/extended/v1/tx/0x' + tx_id + url.search);
228228
}
229229

230-
const eventLimit = getPagingQueryLimit(ResourceType.Tx, req.query['event_limit']);
230+
const eventLimit = getPagingQueryLimit(ResourceType.Tx, req.query['event_limit'], 100);
231231
const eventOffset = parsePagingQueryInput(req.query['event_offset'] ?? 0);
232232
const includeUnanchored = isUnanchoredRequest(req, res, next);
233233
validateRequestHexInput(tx_id);
@@ -276,7 +276,7 @@ export function createTxRouter(db: PgStore): express.Router {
276276
cacheHandler,
277277
asyncHandler(async (req, res) => {
278278
const { block_hash } = req.params;
279-
const limit = getPagingQueryLimit(ResourceType.Tx, req.query['limit']);
279+
const limit = getPagingQueryLimit(ResourceType.Tx, req.query['limit'], 200);
280280
const offset = parsePagingQueryInput(req.query['offset'] ?? 0);
281281
validateRequestHexInput(block_hash);
282282
const result = await db.getTxsFromBlock({ hash: block_hash }, limit, offset);

src/tests/pagination-tests.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,7 @@ describe('getPagingQueryLimit()', () => {
2525
test('Error is thrown when value is larger than input', () => {
2626
expect(() => getPagingQueryLimit(ResourceType.Block, 31)).toThrowError();
2727
});
28+
test('Error is NOT thrown when value is larger than input but a maxLimitOverride has been provided', () => {
29+
expect(() => getPagingQueryLimit(ResourceType.Tx, 100, 200)).not.toThrowError();
30+
});
2831
});

0 commit comments

Comments
 (0)