From ee2433a5ae2d3797477e46bc63ddfb362a0ece24 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Sun, 3 Jan 2021 18:49:33 +0100 Subject: [PATCH] Added barebones scans controller ref #67 --- src/controllers/ScanController.ts | 101 ++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 src/controllers/ScanController.ts diff --git a/src/controllers/ScanController.ts b/src/controllers/ScanController.ts new file mode 100644 index 0000000..a9cea38 --- /dev/null +++ b/src/controllers/ScanController.ts @@ -0,0 +1,101 @@ +import { Authorized, Get, JsonController } from 'routing-controllers'; +import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi'; +import { getConnectionManager, Repository } from 'typeorm'; +import { Scan } from '../models/entities/Scan'; +import { ResponseDonor } from '../models/responses/ResponseDonor'; + +@JsonController('/donors') +@OpenAPI({ security: [{ "AuthToken": [] }, { "RefreshTokenCookie": [] }] }) +export class ScanController { + private scanRepository: Repository; + + /** + * Gets the repository of this controller's model/entity. + */ + constructor() { + this.scanRepository = getConnectionManager().get().getRepository(Scan); + } + + @Get() + @Authorized("SCAN:GET") + @ResponseSchema(ResponseDonor, { isArray: true }) + @OpenAPI({ description: 'Lists all runners from all teams/orgs.
This includes the runner\'s group and distance ran.' }) + async getAll() { + let responseScans: ResponseScan[] = new Array(); + const scans = await this.scanRepository.find(); + scans.forEach(scan => { + responseScans.push(new ResponseScan(scan)); + }); + 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); + // } + + // @Post() + // @Authorized("DONOR:CREATE") + // @ResponseSchema(ResponseDonor) + // @OpenAPI({ description: 'Create a new runner.
Please remeber to provide the runner\'s group\'s id.' }) + // async post(@Body({ validate: true }) createRunner: CreateDonor) { + // let donor; + // try { + // donor = await createRunner.toDonor(); + // } catch (error) { + // throw error; + // } + + // donor = await this.donorRepository.save(donor) + // return new ResponseDonor(await this.donorRepository.findOne(donor)); + // } + + // @Put('/:id') + // @Authorized("DONOR:UPDATE") + // @ResponseSchema(ResponseDonor) + // @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 }) donor: UpdateDonor) { + // let oldDonor = await this.donorRepository.findOne({ id: id }); + + // if (!oldDonor) { + // throw new DonorNotFoundError(); + // } + + // if (oldDonor.id != donor.id) { + // throw new DonorIdsNotMatchingError(); + // } + + // await this.donorRepository.save(await donor.updateDonor(oldDonor)); + // return new ResponseDonor(await this.donorRepository.findOne({ id: id })); + // } + + // @Delete('/:id') + // @Authorized("DONOR:DELETE") + // @ResponseSchema(ResponseDonor) + // @ResponseSchema(ResponseEmpty, { statusCode: 204 }) + // @OnUndefined(204) + // @OpenAPI({ description: 'Delete the runner whose id you provided.
If no runner with this id exists it will just return 204(no content).' }) + // async remove(@Param("id") id: number, @QueryParam("force") force: boolean) { + // let donor = await this.donorRepository.findOne({ id: id }); + // if (!donor) { return null; } + // const responseDonor = await this.donorRepository.findOne(donor); + + // if (!donor) { + // throw new DonorNotFoundError(); + // } + + // //TODO: DELETE DONATIONS AND WARN FOR FORCE (https://git.odit.services/lfk/backend/issues/66) + + // await this.donorRepository.delete(donor); + // return new ResponseDonor(responseDonor); + // } +}