42 feat legg til paginering i listings spørringen #46
+456
−71
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue
Closes #42
Endringer
listingstar nå imotlimit(standard 24, maks 100) ogoffset(standard 0), og returnerer enListingPagemeditems,totalCountoghasNextPage.limitelleroffsetgirBAD_USER_INPUT. Valideringen ligger ibackend/src/validation/paginationArgs.ts.created_at DESC, id DESC.idsom andre nøkkel gjør rekkefølgen stabil, slik at ingen annonser hoppes over eller vises to ganger mellom sidene.createdAter lagt til iListingi GraphQL-skjemaet, som ISO 8601-tekst i UTC.listings_created_at_id_idxi samme rekkefølge som sorteringen. Første side går fra 2,5 ms til 0,01 ms med 10 000 annonser.docs/datasett.md,docs/testing.md,docs/ki-bruk.mdog curl-eksemplene idocs/vm-backend.mdogbackend/deploy/README.mder oppdatert.backender lagt til som scope i prosjektstandarden.Verdt å se på:
listingsreturnerer en side, ikke en liste. Ingen klient bruker spørringen ennå.docs/datasett.md, med cursor-paginering som mulig løsning senere.npm run migratekjøres på VM-en, og tjenesten må restartes. Dette berører [CONFIG] Last inn stort datasett i databasen på VM-en #41, som forventer to migrasjoner. Nå blir det tre.Testing
Nye tester:
backend/src/graphql/listingsPagination.api.test.ts: første side, standard sidestørrelse, siste side, side utenfor treffmengden,totalCount, at hver annonse vises nøyaktig én gang på tvers av sider, rekkefølge ved like tidspunkt, format påcreatedAtog ugyldiglimitogoffset.backend/src/validation/paginationArgs.test.ts: standardverdier og grenser, uten database.Testen for like tidspunkt er kontrollert ved å endre sorteringen til feil rekkefølge med vilje. Den feilet da som den skulle.
Kjørt mot PostgreSQL 18 lokalt med 10 010 annonser. API-et er også prøvd med curl mot
npm run start.npm run typecheck(frontend og backend)npm run lintnpm run format:checknpm test(frontend: 79 tester, backend: 41 tester mot testdatabase)npm run build– frontend er ikke endretSjekkliste
docs/er oppdatert hvis det trengsdocs/ki-bruk.md