diff --git a/src/controllers/RunnerTeamController.ts b/src/controllers/RunnerTeamController.ts index 7b0059d..e363217 100644 --- a/src/controllers/RunnerTeamController.ts +++ b/src/controllers/RunnerTeamController.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 { RunnerTeamHasRunnersError, RunnerTeamIdsNotMatchingError, RunnerTeamNotFoundError } from '../errors/RunnerTeamErrors'; import { CreateRunnerTeam } from '../models/actions/create/CreateRunnerTeam'; import { UpdateRunnerTeam } from '../models/actions/update/UpdateRunnerTeam'; @@ -27,11 +27,18 @@ export class RunnerTeamController { @Authorized("TEAM:GET") @ResponseSchema(ResponseRunnerTeam, { isArray: true }) @OpenAPI({ description: 'Lists all teams.
This includes their parent organization and contact (if existing/associated).' }) - async getAll() { + async getAll(@QueryParam("page", { required: false }) page: number, @QueryParam("page_size", { required: false }) page_size: number = 100) { let responseTeams: ResponseRunnerTeam[] = new Array(); - const runners = await this.runnerTeamRepository.find({ relations: ['parentGroup', 'contact'] }); - runners.forEach(runner => { - responseTeams.push(new ResponseRunnerTeam(runner)); + let teams: Array; + + if (page) { + teams = await this.runnerTeamRepository.find({ relations: ['parentGroup', 'contact'], skip: page * page_size, take: page_size }); + } else { + teams = await this.runnerTeamRepository.find({ relations: ['parentGroup', 'contact'] }); + } + + teams.forEach(team => { + responseTeams.push(new ResponseRunnerTeam(team)); }); return responseTeams; }