From 701706c0289b357439608b4e2eaa66c617d16e9d Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Mon, 8 Feb 2021 16:40:17 +0100 Subject: [PATCH 1/4] Now loading runner's group's parentgroup with every runner controller request ref #140 --- src/controllers/RunnerController.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/controllers/RunnerController.ts b/src/controllers/RunnerController.ts index fbaa381..3f91c3e 100644 --- a/src/controllers/RunnerController.ts +++ b/src/controllers/RunnerController.ts @@ -32,7 +32,7 @@ export class RunnerController { @OpenAPI({ description: 'Lists all runners from all teams/orgs.
This includes the runner\'s group and distance ran.' }) async getAll() { let responseRunners: ResponseRunner[] = new Array(); - const runners = await this.runnerRepository.find({ relations: ['scans', 'group', 'scans.track', 'cards'] }); + const runners = await this.runnerRepository.find({ relations: ['scans', 'group', 'group.parentGroup', 'scans.track', 'cards'] }); runners.forEach(runner => { responseRunners.push(new ResponseRunner(runner)); }); @@ -46,7 +46,7 @@ export class RunnerController { @OnUndefined(RunnerNotFoundError) @OpenAPI({ description: 'Lists all information about the runner whose id got provided.' }) async getOne(@Param('id') id: number) { - let runner = await this.runnerRepository.findOne({ id: id }, { relations: ['scans', 'group', 'scans.track', 'cards'] }) + let runner = await this.runnerRepository.findOne({ id: id }, { relations: ['scans', 'group', 'group.parentGroup', 'scans.track', 'cards'] }) if (!runner) { throw new RunnerNotFoundError(); } return new ResponseRunner(runner); } @@ -91,7 +91,7 @@ export class RunnerController { } runner = await this.runnerRepository.save(runner) - return new ResponseRunner(await this.runnerRepository.findOne(runner, { relations: ['scans', 'group', 'scans.track', 'cards'] })); + return new ResponseRunner(await this.runnerRepository.findOne(runner, { relations: ['scans', 'group', 'group.parentGroup', 'scans.track', 'cards'] })); } @Put('/:id') @@ -112,7 +112,7 @@ export class RunnerController { } await this.runnerRepository.save(await runner.update(oldRunner)); - return new ResponseRunner(await this.runnerRepository.findOne({ id: id }, { relations: ['scans', 'group', 'scans.track', 'cards'] })); + return new ResponseRunner(await this.runnerRepository.findOne({ id: id }, { relations: ['scans', 'group', 'group.parentGroup', 'scans.track', 'cards'] })); } @Delete('/:id') @@ -125,7 +125,7 @@ export class RunnerController { async remove(@Param("id") id: number, @QueryParam("force") force: boolean) { let runner = await this.runnerRepository.findOne({ id: id }); if (!runner) { return null; } - const responseRunner = await this.runnerRepository.findOne(runner, { relations: ['scans', 'group', 'scans.track', 'cards'] }); + const responseRunner = await this.runnerRepository.findOne(runner, { relations: ['scans', 'group', 'group.parentGroup', 'scans.track', 'cards'] }); if (!runner) { throw new RunnerNotFoundError(); From 5872c6335be573d849cdc3746b261c6cf476c3de Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Mon, 8 Feb 2021 16:46:07 +0100 Subject: [PATCH 2/4] Adjusted test for the new response depth ref #140 --- src/tests/runners/runner_get.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tests/runners/runner_get.spec.ts b/src/tests/runners/runner_get.spec.ts index b80afc2..177dcfe 100644 --- a/src/tests/runners/runner_get.spec.ts +++ b/src/tests/runners/runner_get.spec.ts @@ -133,6 +133,7 @@ describe('GET /api/teams/:id/runners after adding', () => { const res = await axios.get(base + '/api/teams/' + added_team.id + "/runners", axios_config); expect(res.status).toEqual(200); expect(res.headers['content-type']).toContain("application/json"); + delete added_runner.group.parentGroup; expect(res.data).toContainEqual(added_runner); }); }); \ No newline at end of file From 906a1dc9e79ea4eb298a561cf98e6ae42b3ae4ec Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Mon, 8 Feb 2021 16:48:20 +0100 Subject: [PATCH 3/4] The group/runners endpoints now also deliver the runner's group's parentGroup ref #140 --- src/controllers/RunnerOrganizationController.ts | 4 ++-- src/controllers/RunnerTeamController.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/controllers/RunnerOrganizationController.ts b/src/controllers/RunnerOrganizationController.ts index a74c103..de19d49 100644 --- a/src/controllers/RunnerOrganizationController.ts +++ b/src/controllers/RunnerOrganizationController.ts @@ -58,8 +58,8 @@ export class RunnerOrganizationController { async getRunners(@Param('id') id: number, @QueryParam('onlyDirect') onlyDirect: boolean) { let responseRunners: ResponseRunner[] = new Array(); let runners: Runner[]; - if (!onlyDirect) { runners = (await this.runnerOrganizationRepository.findOne({ id: id }, { relations: ['runners', 'runners.group', 'runners.scans', 'runners.scans.track', 'teams', 'teams.runners', 'teams.runners.group', 'teams.runners.scans', 'teams.runners.scans.track'] })).allRunners; } - else { runners = (await this.runnerOrganizationRepository.findOne({ id: id }, { relations: ['runners', 'runners.group', 'runners.scans', 'runners.scans.track'] })).runners; } + if (!onlyDirect) { runners = (await this.runnerOrganizationRepository.findOne({ id: id }, { relations: ['runners', 'runners.group', 'runners.group.parentGroup', 'runners.scans', 'runners.scans.track', 'teams', 'teams.runners', 'teams.runners.group', 'teams.runners.group.parentGroup', 'teams.runners.scans', 'teams.runners.scans.track'] })).allRunners; } + else { runners = (await this.runnerOrganizationRepository.findOne({ id: id }, { relations: ['runners', 'runners.group', 'runners.group.parentGroup', 'runners.scans', 'runners.scans.track'] })).runners; } runners.forEach(runner => { responseRunners.push(new ResponseRunner(runner)); }); diff --git a/src/controllers/RunnerTeamController.ts b/src/controllers/RunnerTeamController.ts index 420cfce..7b0059d 100644 --- a/src/controllers/RunnerTeamController.ts +++ b/src/controllers/RunnerTeamController.ts @@ -55,7 +55,7 @@ export class RunnerTeamController { @OpenAPI({ description: 'Lists all runners from this team.
This includes the runner\'s group and distance ran.' }) async getRunners(@Param('id') id: number) { let responseRunners: ResponseRunner[] = new Array(); - const runners = (await this.runnerTeamRepository.findOne({ id: id }, { relations: ['runners', 'runners.group', 'runners.scans', 'runners.scans.track'] })).runners; + const runners = (await this.runnerTeamRepository.findOne({ id: id }, { relations: ['runners', 'runners.group', 'runners.group.parentGroup', 'runners.scans', 'runners.scans.track'] })).runners; runners.forEach(runner => { responseRunners.push(new ResponseRunner(runner)); }); From 90e1ad7db72732d13002c87461c33560b74befa6 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Mon, 8 Feb 2021 16:51:09 +0100 Subject: [PATCH 4/4] Adjusted test for the new response depth ref #140 --- src/tests/runners/runner_get.spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/tests/runners/runner_get.spec.ts b/src/tests/runners/runner_get.spec.ts index 177dcfe..b80afc2 100644 --- a/src/tests/runners/runner_get.spec.ts +++ b/src/tests/runners/runner_get.spec.ts @@ -133,7 +133,6 @@ describe('GET /api/teams/:id/runners after adding', () => { const res = await axios.get(base + '/api/teams/' + added_team.id + "/runners", axios_config); expect(res.status).toEqual(200); expect(res.headers['content-type']).toContain("application/json"); - delete added_runner.group.parentGroup; expect(res.data).toContainEqual(added_runner); }); }); \ No newline at end of file