From 2a72aea10ef940fbdd4a9e6137b22933fdec7734 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 18 Apr 2023 18:41:57 +0200 Subject: [PATCH] Track pagination ref #205 --- src/controllers/TrackController.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/controllers/TrackController.ts b/src/controllers/TrackController.ts index 6ea2907..15ade97 100644 --- a/src/controllers/TrackController.ts +++ b/src/controllers/TrackController.ts @@ -1,6 +1,6 @@ import { Authorized, Body, Delete, Get, JsonController, OnUndefined, Param, Post, Put, QueryParam } from 'routing-controllers'; import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi'; -import { getConnectionManager, Repository } from 'typeorm'; +import { Repository, getConnectionManager } from 'typeorm'; import { TrackHasScanStationsError, TrackIdsNotMatchingError, TrackLapTimeCantBeNegativeError, TrackNotFoundError } from "../errors/TrackErrors"; import { CreateTrack } from '../models/actions/create/CreateTrack'; import { UpdateTrack } from '../models/actions/update/UpdateTrack'; @@ -25,9 +25,17 @@ export class TrackController { @Authorized("TRACK:GET") @ResponseSchema(ResponseTrack, { isArray: true }) @OpenAPI({ description: 'Lists all tracks.' }) - async getAll() { + async getAll(@QueryParam("page", { required: false }) page: number, @QueryParam("page_size", { required: false }) page_size: number = 100) { let responseTracks: ResponseTrack[] = new Array(); - const tracks = await this.trackRepository.find(); + let tracks: Array; + + if (page) { + tracks = await this.trackRepository.find({ skip: page * page_size, take: page_size }); + } + else { + tracks = await this.trackRepository.find(); + } + tracks.forEach(track => { responseTracks.push(new ResponseTrack(track)); });