diff --git a/src/controllers/ScanController.ts b/src/controllers/ScanController.ts
index a9e0cd8..6127e8a 100644
--- a/src/controllers/ScanController.ts
+++ b/src/controllers/ScanController.ts
@@ -1,6 +1,7 @@
-import { Authorized, Get, JsonController } from 'routing-controllers';
+import { Authorized, Get, JsonController, OnUndefined, Param } from 'routing-controllers';
import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
import { getConnectionManager, Repository } from 'typeorm';
+import { ScanNotFoundError } from '../errors/ScanErrors';
import { Scan } from '../models/entities/Scan';
import { ResponseScan } from '../models/responses/ResponseScan';
import { ResponseTrackScan } from '../models/responses/ResponseTrackScan';
@@ -21,7 +22,7 @@ export class ScanController {
@Authorized("SCAN:GET")
@ResponseSchema(ResponseScan, { isArray: true })
@ResponseSchema(ResponseTrackScan, { isArray: true })
- @OpenAPI({ description: 'Lists all runners from all teams/orgs.
This includes the runner\'s group and distance ran.' })
+ @OpenAPI({ description: 'Lists all scans (normal or track) from all runners.
This includes the runner\'s group and distance ran.' })
async getAll() {
let responseScans: ResponseScan[] = new Array();
const scans = await this.scanRepository.find();
@@ -31,17 +32,18 @@ export class ScanController {
return responseScans;
}
- // @Get('/:id')
- // @Authorized("DONOR:GET")
- // @ResponseSchema(ResponseDonor)
- // @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 DonorNotFoundError(); }
- // return new ResponseDonor(donor);
- // }
+ @Get('/:id')
+ @Authorized("DONOR:GET")
+ @ResponseSchema(ResponseScan)
+ @ResponseSchema(ResponseTrackScan)
+ @ResponseSchema(ScanNotFoundError, { statusCode: 404 })
+ @OnUndefined(ScanNotFoundError)
+ @OpenAPI({ description: 'Lists all information about the runner whose id got provided.' })
+ async getOne(@Param('id') id: number) {
+ let scan = await this.scanRepository.findOne({ id: id })
+ if (!scan) { throw new ScanNotFoundError(); }
+ return scan;
+ }
// @Post()
// @Authorized("DONOR:CREATE")
diff --git a/src/errors/ScanErrors.ts b/src/errors/ScanErrors.ts
new file mode 100644
index 0000000..77894df
--- /dev/null
+++ b/src/errors/ScanErrors.ts
@@ -0,0 +1,25 @@
+import { IsString } from 'class-validator';
+import { NotAcceptableError, NotFoundError } from 'routing-controllers';
+
+/**
+ * Error to throw when a Scan couldn't be found.
+ */
+export class ScanNotFoundError extends NotFoundError {
+ @IsString()
+ name = "ScanNotFoundError"
+
+ @IsString()
+ message = "Scan not found!"
+}
+
+/**
+ * Error to throw when two Scans' ids don't match.
+ * Usually occurs when a user tries to change a Scan's id.
+ */
+export class ScanIdsNotMatchingError extends NotAcceptableError {
+ @IsString()
+ name = "ScanIdsNotMatchingError"
+
+ @IsString()
+ message = "The ids don't match! \n And if you wanted to change a Scan's id: This isn't allowed!"
+}
\ No newline at end of file