Bug-ul săptămânii · 26 octombrie 2026
Paginarea care pierde ultimul element
Un endpoint de listare într-un API REST · Logică · dificultate 1/3
Un coleg i-a cerut asistentului AI: „Scrie o funcție paginate(items, page, pageSize) pentru endpoint-ul nostru de listare. Paginile încep de la 1. Returnează elementele paginii cerute plus informațiile de paginare.”
Codul a venit în treizeci de secunde, cu teste care trec. Contractul promis de docstring:
pageîncepe de la 1;pageSizee numărul maxim de elemente pe pagină.itemsconține elementele paginii cerute, în ordinea lor inițială.totalPagese numărul de pagini necesare pentru toate elementele.hasNextetruecând există o pagină după cea cerută.
Fă-i review înainte de merge.
Fără cont. Fără indicii. Timpul curge.0 s
Dă clic pe linia (sau liniile) cu defectul, alege categoria, apoi trimite. Cu tastatura: săgețile ca să te miști, Space ca să marchezi. În acest mod codul nu poate fi editat.
1export type Page<T> = {
2 items: T[];
3 page: number;
4 pageSize: number;
5 totalItems: number;
6 totalPages: number;
7 hasNext: boolean;
8};
9
10/**
11 * Returns page `page` (starting at 1) of `items`, with `pageSize` items per page.
12 */
13export function paginate<T>(items: T[], page: number, pageSize: number): Page<T> {
14 const totalItems = items.length;
15 const totalPages = Math.floor(totalItems / pageSize);
16 const start = (page - 1) * pageSize;
17 const end = start + pageSize;
18 return {
19 items: items.slice(start, end),
20 page,
21 pageSize,
22 totalItems,
23 totalPages,
24 hasNext: page < totalPages,
25 };
26}
0 linii marcate