From f60025b6de79b0f5f89995bf59260194f5de9af0 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 18 Apr 2023 18:39:37 +0200 Subject: [PATCH] scanstation pagination ref #205 --- src/controllers/ScanStationController.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/controllers/ScanStationController.ts b/src/controllers/ScanStationController.ts index 80aa6e3..f64605b 100644 --- a/src/controllers/ScanStationController.ts +++ b/src/controllers/ScanStationController.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 { ScanStationHasScansError, ScanStationIdsNotMatchingError, ScanStationNotFoundError } from '../errors/ScanStationErrors'; import { TrackNotFoundError } from '../errors/TrackErrors'; import { CreateScanStation } from '../models/actions/create/CreateScanStation'; @@ -26,9 +26,16 @@ export class ScanStationController { @Authorized("STATION:GET") @ResponseSchema(ResponseScanStation, { isArray: true }) @OpenAPI({ description: 'Lists all stations.
This includes their associated tracks.' }) - async getAll() { + async getAll(@QueryParam("page", { required: false }) page: number, @QueryParam("page_size", { required: false }) page_size: number = 100) { let responseStations: ResponseScanStation[] = new Array(); - const stations = await this.stationRepository.find({ relations: ['track'] }); + let stations: Array; + + if (page) { + stations = await this.stationRepository.find({ relations: ['track'], skip: page * page_size, take: page_size }); + } else { + stations = await this.stationRepository.find({ relations: ['track'] }); + } + stations.forEach(station => { responseStations.push(station.toResponse()); });