diff --git a/src/controllers/DonorController.ts b/src/controllers/DonorController.ts index 5438daa..6b8fc7b 100644 --- a/src/controllers/DonorController.ts +++ b/src/controllers/DonorController.ts @@ -1,8 +1,8 @@ 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 { RunnerGroupNeededError, RunnerIdsNotMatchingError, RunnerNotFoundError } from '../errors/RunnerErrors'; -import { RunnerGroupNotFoundError } from '../errors/RunnerGroupErrors'; +import { DonorIdsNotMatchingError, DonorNotFoundError } from '../errors/DonorErrors'; +import { RunnerIdsNotMatchingError } from '../errors/RunnerErrors'; import { CreateRunner } from '../models/actions/CreateRunner'; import { UpdateRunner } from '../models/actions/UpdateRunner'; import { Donor } from '../models/entities/Donor'; @@ -37,20 +37,18 @@ export class DonorController { @Get('/:id') @Authorized("DONOR:GET") @ResponseSchema(ResponseDonor) - @ResponseSchema(RunnerNotFoundError, { statusCode: 404 }) - @OnUndefined(RunnerNotFoundError) + @ResponseSchema(DonorNotFoundError, { statusCode: 404 }) + @OnUndefined(DonorNotFoundError) @OpenAPI({ description: 'Lists all information about the runner whose id got provided.' }) async getOne(@Param('id') id: number) { let donor = await this.donorRepository.findOne({ id: id }) - if (!donor) { throw new RunnerNotFoundError(); } + if (!donor) { throw new DonorNotFoundError(); } return new ResponseDonor(donor); } @Post() @Authorized("DONOR:CREATE") @ResponseSchema(ResponseDonor) - @ResponseSchema(RunnerGroupNeededError) - @ResponseSchema(RunnerGroupNotFoundError) @OpenAPI({ description: 'Create a new runner.
Please remeber to provide the runner\'s group\'s id.' }) async post(@Body({ validate: true }) createRunner: CreateRunner) { let runner; @@ -67,14 +65,14 @@ export class DonorController { @Put('/:id') @Authorized("DONOR:UPDATE") @ResponseSchema(ResponseDonor) - @ResponseSchema(RunnerNotFoundError, { statusCode: 404 }) - @ResponseSchema(RunnerIdsNotMatchingError, { statusCode: 406 }) + @ResponseSchema(DonorNotFoundError, { statusCode: 404 }) + @ResponseSchema(DonorIdsNotMatchingError, { statusCode: 406 }) @OpenAPI({ description: "Update the runner whose id you provided.
Please remember that ids can't be changed." }) async put(@Param('id') id: number, @Body({ validate: true }) runner: UpdateRunner) { let oldRunner = await this.donorRepository.findOne({ id: id }, { relations: ['group'] }); if (!oldRunner) { - throw new RunnerNotFoundError(); + throw new DonorNotFoundError(); } if (oldRunner.id != runner.id) { @@ -97,7 +95,7 @@ export class DonorController { const responseDonor = await this.donorRepository.findOne(donor); if (!donor) { - throw new RunnerNotFoundError(); + throw new DonorNotFoundError(); } //TODO: DELETE DONATIONS AND WARN FOR FORCE diff --git a/src/errors/DonorErrors.ts b/src/errors/DonorErrors.ts new file mode 100644 index 0000000..94a844a --- /dev/null +++ b/src/errors/DonorErrors.ts @@ -0,0 +1,25 @@ +import { IsString } from 'class-validator'; +import { NotAcceptableError, NotFoundError } from 'routing-controllers'; + +/** + * Error to throw when a donor couldn't be found. + */ +export class DonorNotFoundError extends NotFoundError { + @IsString() + name = "DonorNotFoundError" + + @IsString() + message = "Donor not found!" +} + +/** + * Error to throw when two donors' ids don't match. + * Usually occurs when a user tries to change a donor's id. + */ +export class DonorIdsNotMatchingError extends NotAcceptableError { + @IsString() + name = "DonorIdsNotMatchingError" + + @IsString() + message = "The ids don't match! \n And if you wanted to change a donor's id: This isn't allowed!" +} \ No newline at end of file